You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sl...@apache.org on 2025/06/17 07:38:52 UTC

(hadoop) branch trunk updated: HADOOP-19415. [JDK17] Upgrade JUnit from 4 to 5 in hadoop-common Part7. (#7664)

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

slfan1989 pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git


The following commit(s) were added to refs/heads/trunk by this push:
     new c4abdd7da94 HADOOP-19415. [JDK17] Upgrade JUnit from 4 to 5 in hadoop-common Part7. (#7664)
c4abdd7da94 is described below

commit c4abdd7da947ebde7054a5fa836d502532079661
Author: slfan1989 <55...@users.noreply.github.com>
AuthorDate: Tue Jun 17 15:38:44 2025 +0800

    HADOOP-19415. [JDK17] Upgrade JUnit from 4 to 5 in hadoop-common Part7. (#7664)
    
    * HADOOP-19415. [JDK17] Upgrade JUnit from 4 to 5 in hadoop-common Part7.
    
    Co-authored-by: He Xiaoqiao <he...@apache.org>
    Co-authored-by: Hualong Zhang <hu...@hotmail.com>
    Reviewed-by: Chris Nauroth <cn...@apache.org>
    Reviewed-by: He Xiaoqiao <he...@apache.org>
    Reviewed-by: Hualong Zhang <hu...@hotmail.com>
    Signed-off-by: Shilun Fan <sl...@apache.org>
---
 .../org/apache/hadoop/conf/TestConfigRedactor.java |   2 +-
 .../java/org/apache/hadoop/fs/TestFileUtil.java    | 440 +++++++------
 .../test/java/org/apache/hadoop/fs/TestPath.java   | 103 +--
 .../test/java/org/apache/hadoop/fs/TestStat.java   |  36 +-
 .../hadoop/fs/contract/AbstractFSContract.java     |   5 +-
 .../hadoop/fs/contract/ContractTestUtils.java      | 120 ++--
 .../apache/hadoop/fs/contract/ftp/FTPContract.java |   4 +-
 ...TestRawLocalContractUnderlyingFileBehavior.java |  12 +-
 .../apache/hadoop/fs/shell/TestTextCommand.java    |  43 +-
 .../hadoop/fs/viewfs/TestChRootedFileSystem.java   | 171 ++---
 .../fs/viewfs/TestHCFSMountTableConfigLoader.java  |  41 +-
 .../hadoop/fs/viewfs/TestNestedMountPoint.java     | 313 +++++-----
 .../hadoop/fs/viewfs/TestRegexMountPoint.java      |  54 +-
 .../viewfs/TestViewFileSystemLocalFileSystem.java  |   2 -
 ...ViewFileSystemWithAuthorityLocalFileSystem.java |  23 +-
 .../viewfs/TestViewFsOverloadSchemeListStatus.java |  22 +-
 .../hadoop/fs/viewfs/ViewFileSystemBaseTest.java   | 452 +++++++-------
 .../apache/hadoop/fs/viewfs/ViewFsTestSetup.java   |   7 +-
 .../org/apache/hadoop/ha/ClientBaseWithFixes.java  | 687 ++++++++++-----------
 .../hadoop/ha/TestActiveStandbyElectorRealZK.java  |  82 +--
 .../apache/hadoop/ha/TestZKFailoverController.java |  53 +-
 .../hadoop/ha/TestZKFailoverControllerStress.java  |  20 +-
 .../hadoop/metrics2/impl/MetricsRecords.java       |   8 +-
 .../sink/RollingFileSystemSinkTestBase.java        |  47 +-
 .../sink/TestRollingFileSystemSinkWithLocal.java   |  18 +-
 .../hadoop/security/TestUserGroupInformation.java  | 202 +++---
 .../TestZKDelegationTokenSecretManager.java        | 100 +--
 ...egationTokenAuthenticationHandlerWithMocks.java | 338 +++++-----
 .../org/apache/hadoop/service/ServiceAssert.java   |  16 +-
 .../service/TestGlobalStateChangeListener.java     |  18 +-
 .../hadoop/service/TestServiceLifecycle.java       |  10 +-
 .../org/apache/hadoop/test/GenericTestUtils.java   |  41 +-
 .../org/apache/hadoop/test/LambdaTestUtils.java    |  18 +-
 .../org/apache/hadoop/test/MetricsAsserts.java     |  53 +-
 .../java/org/apache/hadoop/test/MoreAsserts.java   |  24 +-
 .../org/apache/hadoop/tools/GetGroupsTestBase.java |  36 +-
 .../hadoop/fs/contract/hdfs/HDFSContract.java      |   8 +-
 .../server/namenode/ha/TestGetGroupsWithHA.java    |   8 +-
 .../apache/hadoop/hdfs/tools/TestGetGroups.java    |   8 +-
 .../fs/s3a/ITestS3ATemporaryCredentials.java       |  20 +-
 40 files changed, 1922 insertions(+), 1743 deletions(-)

diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigRedactor.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigRedactor.java
index 315b507cc6a..a59db14e235 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigRedactor.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/conf/TestConfigRedactor.java
@@ -18,7 +18,7 @@
 
 package org.apache.hadoop.conf;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java
index 177223dc082..e7998506301 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestFileUtil.java
@@ -19,13 +19,16 @@
 
 import static org.apache.hadoop.test.LambdaTestUtils.intercept;
 import static org.apache.hadoop.test.PlatformAssumptions.assumeNotWindows;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -66,22 +69,21 @@
 import org.apache.tools.tar.TarEntry;
 import org.apache.tools.tar.TarOutputStream;
 
-import org.assertj.core.api.Assertions;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+import org.junit.jupiter.api.io.TempDir;
+import org.mockito.exceptions.misusing.MissingMethodInvocationException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class TestFileUtil {
   private static final Logger LOG = LoggerFactory.getLogger(TestFileUtil.class);
 
-  @Rule
-  public TemporaryFolder testFolder = new TemporaryFolder();
+  @TempDir
+  private java.nio.file.Path testFolder;
 
   private static final String FILE = "x";
   private static final String LINK = "y";
@@ -139,11 +141,11 @@ public class TestFileUtil {
    *   file: part-r-00000, contents: "foo"
    *   file: part-r-00001, contents: "bar"
    */
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
-    del = testFolder.newFolder("del");
-    tmp = testFolder.newFolder("tmp");
-    partitioned = testFolder.newFolder("partitioned");
+    del = testFolder.resolve("del").toFile();
+    tmp = testFolder.resolve("tmp").toFile();
+    partitioned = testFolder.resolve("partitioned").toFile();
 
     zlink = new File(del, "zlink");
 
@@ -161,6 +163,8 @@ public void setup() throws IOException {
 
     FileUtils.forceMkdir(dir1);
     FileUtils.forceMkdir(dir2);
+    FileUtils.forceMkdir(tmp);
+    FileUtils.forceMkdir(partitioned);
 
     Verify.createNewFile(new File(del, FILE));
     File tmpFile = Verify.createNewFile(new File(tmp, FILE));
@@ -176,7 +180,7 @@ public void setup() throws IOException {
     // create a symlink to dir
     File linkDir = new File(del, "tmpDir");
     FileUtil.symLink(tmp.toString(), linkDir.toString());
-    Assert.assertEquals(5, Objects.requireNonNull(del.listFiles()).length);
+    assertEquals(5, Objects.requireNonNull(del.listFiles()).length);
 
     // create files in partitioned directories
     createFile(partitioned, "part-r-00000", "foo");
@@ -186,9 +190,19 @@ public void setup() throws IOException {
     FileUtil.symLink(del.toString(), dir1.toString() + "/cycle");
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws IOException {
-    testFolder.delete();
+    if (Files.exists(testFolder)) {
+      Files.walk(testFolder)
+          .map(java.nio.file.Path::toFile)
+          .forEach(file -> {
+            if (file.isDirectory()) {
+              file.delete();
+            } else {
+              file.delete();
+            }
+          });
+    }
   }
 
   /**
@@ -209,62 +223,65 @@ private File createFile(File directory, String name, String contents)
     return newFile;
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testListFiles() throws IOException {
     //Test existing files case 
     File[] files = FileUtil.listFiles(partitioned);
-    Assert.assertEquals(2, files.length);
+    assertEquals(2, files.length);
 
     //Test existing directory with no files case 
     File newDir = new File(tmp.getPath(),"test");
     Verify.mkdir(newDir);
-    Assert.assertTrue("Failed to create test dir", newDir.exists());
+    assertTrue(newDir.exists(), "Failed to create test dir");
     files = FileUtil.listFiles(newDir);
-    Assert.assertEquals(0, files.length);
+    assertEquals(0, files.length);
     assertTrue(newDir.delete());
-    Assert.assertFalse("Failed to delete test dir", newDir.exists());
+    assertFalse(newDir.exists(), "Failed to delete test dir");
     
     //Test non-existing directory case, this throws 
     //IOException
     try {
       files = FileUtil.listFiles(newDir);
-      Assert.fail("IOException expected on listFiles() for non-existent dir "
+      fail("IOException expected on listFiles() for non-existent dir "
       		+ newDir.toString());
     } catch(IOException ioe) {
     	//Expected an IOException
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testListAPI() throws IOException {
     //Test existing files case 
     String[] files = FileUtil.list(partitioned);
-    Assert.assertEquals("Unexpected number of pre-existing files", 2, files.length);
+    assertEquals(2, files.length, "Unexpected number of pre-existing files");
 
     //Test existing directory with no files case 
     File newDir = new File(tmp.getPath(),"test");
     Verify.mkdir(newDir);
-    Assert.assertTrue("Failed to create test dir", newDir.exists());
+    assertTrue(newDir.exists(), "Failed to create test dir");
     files = FileUtil.list(newDir);
-    Assert.assertEquals("New directory unexpectedly contains files", 0, files.length);
+    assertEquals(0, files.length, "New directory unexpectedly contains files");
     assertTrue(newDir.delete());
-    Assert.assertFalse("Failed to delete test dir", newDir.exists());
+    assertFalse(newDir.exists(), "Failed to delete test dir");
     
     //Test non-existing directory case, this throws 
     //IOException
     try {
       files = FileUtil.list(newDir);
-      Assert.fail("IOException expected on list() for non-existent dir "
+      fail("IOException expected on list() for non-existent dir "
           + newDir.toString());
     } catch(IOException ioe) {
       //Expected an IOException
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFullyDelete() throws IOException {
     boolean ret = FileUtil.fullyDelete(del);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.notExists(del);
     validateTmpDir();
   }
@@ -275,14 +292,15 @@ public void testFullyDelete() throws IOException {
    * (b) symlink to dir only and not the dir pointed to by symlink.
    * @throws IOException
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFullyDeleteSymlinks() throws IOException {
     File link = new File(del, LINK);
     assertDelListLength(5);
     // Since tmpDir is symlink to tmp, fullyDelete(tmpDir) should not
     // delete contents of tmp. See setupDirs for details.
     boolean ret = FileUtil.fullyDelete(link);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.notExists(link);
     assertDelListLength(4);
     validateTmpDir();
@@ -291,7 +309,7 @@ public void testFullyDeleteSymlinks() throws IOException {
     // Since tmpDir is symlink to tmp, fullyDelete(tmpDir) should not
     // delete contents of tmp. See setupDirs for details.
     ret = FileUtil.fullyDelete(linkDir);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.notExists(linkDir);
     assertDelListLength(3);
     validateTmpDir();
@@ -303,12 +321,13 @@ public void testFullyDeleteSymlinks() throws IOException {
    * (b) dangling symlink to directory properly
    * @throws IOException
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFullyDeleteDanglingSymlinks() throws IOException {
     // delete the directory tmp to make tmpDir a dangling link to dir tmp and
     // to make y as a dangling link to file tmp/x
     boolean ret = FileUtil.fullyDelete(tmp);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.notExists(tmp);
 
     // dangling symlink to file
@@ -317,7 +336,7 @@ public void testFullyDeleteDanglingSymlinks() throws IOException {
     // Even though 'y' is dangling symlink to file tmp/x, fullyDelete(y)
     // should delete 'y' properly.
     ret = FileUtil.fullyDelete(link);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     assertDelListLength(4);
 
     // dangling symlink to directory
@@ -325,22 +344,23 @@ public void testFullyDeleteDanglingSymlinks() throws IOException {
     // Even though tmpDir is dangling symlink to tmp, fullyDelete(tmpDir) should
     // delete tmpDir properly.
     ret = FileUtil.fullyDelete(linkDir);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     assertDelListLength(3);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFullyDeleteContents() throws IOException {
     boolean ret = FileUtil.fullyDeleteContents(del);
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.exists(del);
-    Assert.assertEquals(0, Objects.requireNonNull(del.listFiles()).length);
+    assertEquals(0, Objects.requireNonNull(del.listFiles()).length);
     validateTmpDir();
   }
 
   private void validateTmpDir() {
     Verify.exists(tmp);
-    Assert.assertEquals(1, Objects.requireNonNull(tmp.listFiles()).length);
+    assertEquals(1, Objects.requireNonNull(tmp.listFiles()).length);
     Verify.exists(new File(tmp, FILE));
   }
 
@@ -408,28 +428,23 @@ private void validateAndSetWritablePermissions(
     grantPermissions(xSubDir);
     grantPermissions(xSubSubDir);
     
-    Assert.assertFalse("The return value should have been false.", ret);
-    Assert.assertTrue("The file file1 should not have been deleted.",
-        new File(del, FILE_1_NAME).exists());
-    
-    Assert.assertEquals(
-        "The directory xSubDir *should* not have been deleted.",
-        expectedRevokedPermissionDirsExist, xSubDir.exists());
-    Assert.assertEquals("The file file2 *should* not have been deleted.",
-        expectedRevokedPermissionDirsExist, file2.exists());
-    Assert.assertEquals(
-        "The directory xSubSubDir *should* not have been deleted.",
-        expectedRevokedPermissionDirsExist, xSubSubDir.exists());
-    Assert.assertEquals("The file file22 *should* not have been deleted.",
-        expectedRevokedPermissionDirsExist, file22.exists());
-    
-    Assert.assertFalse("The directory ySubDir should have been deleted.",
-        ySubDir.exists());
-    Assert.assertFalse("The link zlink should have been deleted.",
-        zlink.exists());
+    assertFalse(ret, "The return value should have been false.");
+    assertTrue(new File(del, FILE_1_NAME).exists(),
+        "The file file1 should not have been deleted.");
+    assertEquals(expectedRevokedPermissionDirsExist, xSubDir.exists(),
+        "The directory xSubDir *should* not have been deleted.");
+    assertEquals(expectedRevokedPermissionDirsExist, file2.exists(),
+        "The file file2 *should* not have been deleted.");
+    assertEquals(expectedRevokedPermissionDirsExist, xSubSubDir.exists(),
+        "The directory xSubSubDir *should* not have been deleted.");
+    assertEquals(expectedRevokedPermissionDirsExist, file22.exists(),
+        "The file file22 *should* not have been deleted.");
+    assertFalse(ySubDir.exists(), "The directory ySubDir should have been deleted.");
+    assertFalse(zlink.exists(), "The link zlink should have been deleted.");
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFailFullyDelete() throws IOException {
     // Windows Dir.setWritable(false) does not work for directories
     assumeNotWindows();
@@ -439,7 +454,8 @@ public void testFailFullyDelete() throws IOException {
     validateAndSetWritablePermissions(true, ret);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFailFullyDeleteGrantPermissions() throws IOException {
     setupDirsAndNonWritablePermissions();
     boolean ret = FileUtil.fullyDelete(new MyFile(del), true);
@@ -452,7 +468,8 @@ public void testFailFullyDeleteGrantPermissions() throws IOException {
    * Tests if fullyDelete deletes symlink's content when deleting unremovable dir symlink.
    * @throws IOException
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFailFullyDeleteDirSymlinks() throws IOException {
     File linkDir = new File(del, "tmpDir");
     FileUtil.setWritable(del, false);
@@ -460,7 +477,7 @@ public void testFailFullyDeleteDirSymlinks() throws IOException {
     // delete contents of tmp. See setupDirs for details.
     boolean ret = FileUtil.fullyDelete(linkDir);
     // fail symlink deletion
-    Assert.assertFalse(ret);
+    assertFalse(ret);
     Verify.exists(linkDir);
     assertDelListLength(5);
     // tmp dir should exist
@@ -469,7 +486,7 @@ public void testFailFullyDeleteDirSymlinks() throws IOException {
     FileUtil.setWritable(del, true);
     ret = FileUtil.fullyDelete(linkDir);
     // success symlink deletion
-    Assert.assertTrue(ret);
+    assertTrue(ret);
     Verify.notExists(linkDir);
     assertDelListLength(4);
     // tmp dir should exist
@@ -482,7 +499,7 @@ public void testFailFullyDeleteDirSymlinks() throws IOException {
    * @param expectedLength The expected length of the {@link TestFileUtil#del}.
    */
   private void assertDelListLength(int expectedLength) {
-    Assertions.assertThat(del.list()).describedAs("del list").isNotNull().hasSize(expectedLength);
+    assertThat(del.list()).describedAs("del list").isNotNull().hasSize(expectedLength);
   }
 
   /**
@@ -497,7 +514,7 @@ public static class Verify {
      * @throws IOException As per {@link File#createNewFile()}.
      */
     public static File createNewFile(File file) throws IOException {
-      assertTrue("Unable to create new file " + file, file.createNewFile());
+      assertTrue(file.createNewFile(), "Unable to create new file " + file);
       return file;
     }
 
@@ -508,7 +525,7 @@ public static File createNewFile(File file) throws IOException {
      * @return The result of {@link File#mkdir()}.
      */
     public static File mkdir(File file) {
-      assertTrue("Unable to mkdir for " + file, file.mkdir());
+      assertTrue(file.mkdir(), "Unable to mkdir for " + file);
       return file;
     }
 
@@ -519,7 +536,7 @@ public static File mkdir(File file) {
      * @return The result of {@link File#mkdirs()}.
      */
     public static File mkdirs(File file) {
-      assertTrue("Unable to mkdirs for " + file, file.mkdirs());
+      assertTrue(file.mkdirs(), "Unable to mkdirs for " + file);
       return file;
     }
 
@@ -530,7 +547,7 @@ public static File mkdirs(File file) {
      * @return The result of {@link File#delete()}.
      */
     public static File delete(File file) {
-      assertTrue("Unable to delete " + file, file.delete());
+      assertTrue(file.delete(), "Unable to delete " + file);
       return file;
     }
 
@@ -541,7 +558,7 @@ public static File delete(File file) {
      * @return The result of {@link File#exists()}.
      */
     public static File exists(File file) {
-      assertTrue("Expected file " + file + " doesn't exist", file.exists());
+      assertTrue(file.exists(), "Expected file " + file + " doesn't exist");
       return file;
     }
 
@@ -553,7 +570,7 @@ public static File exists(File file) {
      * @return The negation of the result of {@link File#exists()}.
      */
     public static File notExists(File file) {
-      assertFalse("Expected file " + file + " must not exist", file.exists());
+      assertFalse(file.exists(), "Expected file " + file + " must not exist");
       return file;
     }
   }
@@ -619,7 +636,8 @@ public File[] listFiles() {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFailFullyDeleteContents() throws IOException {
     // Windows Dir.setWritable(false) does not work for directories
     assumeNotWindows();
@@ -629,7 +647,8 @@ public void testFailFullyDeleteContents() throws IOException {
     validateAndSetWritablePermissions(true, ret);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testFailFullyDeleteContentsGrantPermissions() throws IOException {
     setupDirsAndNonWritablePermissions();
     boolean ret = FileUtil.fullyDeleteContents(new MyFile(del), true);
@@ -642,13 +661,14 @@ public void testFailFullyDeleteContentsGrantPermissions() throws IOException {
    * and that directory sizes are not added to the final calculated size
    * @throws IOException
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetDU() throws Exception {
-    long du = FileUtil.getDU(testFolder.getRoot());
+    long du = FileUtil.getDU(testFolder.toFile());
     // Only two files (in partitioned).  Each has 3 characters + system-specific
     // line separator.
     final long expected = 2 * (3 + System.getProperty("line.separator").length());
-    Assert.assertEquals(expected, du);
+    assertEquals(expected, du);
     
     // target file does not exist:
     final File doesNotExist = new File(tmp, "QuickBrownFoxJumpsOverTheLazyDog");
@@ -691,7 +711,8 @@ public void testGetDU() throws Exception {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUnTar() throws Exception {
     // make a simple tar:
     final File simpleTar = new File(del, FILE);
@@ -718,7 +739,8 @@ public void testUnTar() throws Exception {
     LambdaTestUtils.intercept(IOException.class, () -> FileUtil.unTar(simpleTar, regularFile));
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testReplaceFile() throws IOException {
     // src exists, and target does not exist:
     final File srcFile = Verify.createNewFile(new File(tmp, "src"));
@@ -754,7 +776,8 @@ public void testReplaceFile() throws IOException {
     Verify.exists(obstacle);
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testCreateLocalTempFile() throws IOException {
     final File baseFile = new File(tmp, "base");
     File tmp1 = FileUtil.createLocalTempFile(baseFile, "foo", false);
@@ -769,7 +792,8 @@ public void testCreateLocalTempFile() throws IOException {
     assertTrue(!tmp1.exists() && !tmp2.exists());
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUnZip() throws Exception {
     // make sa simple zip
     final File simpleZip = new File(del, FILE);
@@ -811,40 +835,41 @@ public void testUnZip() throws Exception {
     assertTrue(foo6.exists());
     assertEquals(12, foo0.length());
     // tests whether file foo_0 has executable permissions
-    assertTrue("file lacks execute permissions", foo0.canExecute());
-    assertFalse("file has write permissions", foo0.canWrite());
-    assertFalse("file has read permissions", foo0.canRead());
+    assertTrue(foo0.canExecute(), "file lacks execute permissions");
+    assertFalse(foo0.canWrite(), "file has write permissions");
+    assertFalse(foo0.canRead(), "file has read permissions");
     // tests whether file foo_1 has writable permissions
-    assertFalse("file has execute permissions", foo1.canExecute());
-    assertTrue("file lacks write permissions", foo1.canWrite());
-    assertFalse("file has read permissions", foo1.canRead());
+    assertFalse(foo1.canExecute(), "file has execute permissions");
+    assertTrue(foo1.canWrite(), "file lacks write permissions");
+    assertFalse(foo1.canRead(), "file has read permissions");
     // tests whether file foo_2 has executable and writable permissions
-    assertTrue("file lacks execute permissions", foo2.canExecute());
-    assertTrue("file lacks write permissions", foo2.canWrite());
-    assertFalse("file has read permissions", foo2.canRead());
+    assertTrue(foo2.canExecute(), "file lacks execute permissions");
+    assertTrue(foo2.canWrite(), "file lacks write permissions");
+    assertFalse(foo2.canRead(), "file has read permissions");
     // tests whether file foo_3 has readable permissions
-    assertFalse("file has execute permissions", foo3.canExecute());
-    assertFalse("file has write permissions", foo3.canWrite());
-    assertTrue("file lacks read permissions", foo3.canRead());
+    assertFalse(foo3.canExecute(), "file has execute permissions");
+    assertFalse(foo3.canWrite(), "file has write permissions");
+    assertTrue(foo3.canRead(), "file lacks read permissions");
     // tests whether file foo_4 has readable and executable permissions
-    assertTrue("file lacks execute permissions", foo4.canExecute());
-    assertFalse("file has write permissions", foo4.canWrite());
-    assertTrue("file lacks read permissions", foo4.canRead());
+    assertTrue(foo4.canExecute(), "file lacks execute permissions");
+    assertFalse(foo4.canWrite(), "file has write permissions");
+    assertTrue(foo4.canRead(), "file lacks read permissions");
     // tests whether file foo_5 has readable and writable permissions
-    assertFalse("file has execute permissions", foo5.canExecute());
-    assertTrue("file lacks write permissions", foo5.canWrite());
-    assertTrue("file lacks read permissions", foo5.canRead());
+    assertFalse(foo5.canExecute(), "file has execute permissions");
+    assertTrue(foo5.canWrite(), "file lacks write permissions");
+    assertTrue(foo5.canRead(), "file lacks read permissions");
     // tests whether file foo_6 has readable, writable and executable permissions
-    assertTrue("file lacks execute permissions", foo6.canExecute());
-    assertTrue("file lacks write permissions", foo6.canWrite());
-    assertTrue("file lacks read permissions", foo6.canRead());
+    assertTrue(foo6.canExecute(), "file lacks execute permissions");
+    assertTrue(foo6.canWrite(), "file lacks write permissions");
+    assertTrue(foo6.canRead(), "file lacks read permissions");
 
     final File regularFile =
         Verify.createNewFile(new File(tmp, "QuickBrownFoxJumpsOverTheLazyDog"));
     LambdaTestUtils.intercept(IOException.class, () -> FileUtil.unZip(simpleZip, regularFile));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUnZip2() throws IOException {
     // make a simple zip
     final File simpleZip = new File(del, FILE);
@@ -871,7 +896,8 @@ public void testUnZip2() throws IOException {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   /*
    * Test method copy(FileSystem srcFS, Path src, File dst, boolean deleteSource, Configuration conf)
    */
@@ -919,7 +945,8 @@ public void testCopy5() throws IOException {
     Verify.notExists(partitioned); // should be deleted
   }  
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testStat2Paths1() {
     assertNull(FileUtil.stat2Paths(null));
     
@@ -939,7 +966,8 @@ public void testStat2Paths1() {
     assertEquals(paths[1], path2);
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testStat2Paths2()  {
     Path defaultPath = new Path("file://default");
     Path[] paths = FileUtil.stat2Paths(null, defaultPath);
@@ -963,7 +991,8 @@ public void testStat2Paths2()  {
     assertEquals(paths[1], path2);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSymlink() throws Exception {
     byte[] data = "testSymLink".getBytes();
 
@@ -979,8 +1008,8 @@ public void testSymlink() throws Exception {
     FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
     //ensure that symlink length is correctly reported by Java
-    Assert.assertEquals(data.length, file.length());
-    Assert.assertEquals(data.length, link.length());
+    assertEquals(data.length, file.length());
+    assertEquals(data.length, link.length());
 
     //ensure that we can read from link.
     FileInputStream in = new FileInputStream(link);
@@ -989,13 +1018,14 @@ public void testSymlink() throws Exception {
       len++;
     }
     in.close();
-    Assert.assertEquals(data.length, len);
+    assertEquals(data.length, len);
   }
   
   /**
    * Test that rename on a symlink works as expected.
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSymlinkRenameTo() throws Exception {
     File file = new File(del, FILE);
     file.createNewFile();
@@ -1010,7 +1040,7 @@ public void testSymlinkRenameTo() throws Exception {
     File link2 = new File(del, "_link2");
 
     // Rename the symlink
-    Assert.assertTrue(link.renameTo(link2));
+    assertTrue(link.renameTo(link2));
 
     // Make sure the file still exists
     // (NOTE: this would fail on Java6 on Windows if we didn't
@@ -1024,7 +1054,8 @@ public void testSymlinkRenameTo() throws Exception {
   /**
    * Test that deletion of a symlink works as expected.
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSymlinkDelete() throws Exception {
     File file = new File(del, FILE);
     file.createNewFile();
@@ -1045,7 +1076,8 @@ public void testSymlinkDelete() throws Exception {
   /**
    * Test that length on a symlink works as expected.
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSymlinkLength() throws Exception {
     byte[] data = "testSymLinkData".getBytes();
 
@@ -1057,19 +1089,19 @@ public void testSymlinkLength() throws Exception {
     os.write(data);
     os.close();
 
-    Assert.assertEquals(0, link.length());
+    assertEquals(0, link.length());
 
     // create the symlink
     FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
     // ensure that File#length returns the target file and link size
-    Assert.assertEquals(data.length, file.length());
-    Assert.assertEquals(data.length, link.length());
+    assertEquals(data.length, file.length());
+    assertEquals(data.length, link.length());
 
     Verify.delete(file);
     Verify.notExists(file);
 
-    Assert.assertEquals(0, link.length());
+    assertEquals(0, link.length());
 
     Verify.delete(link);
     Verify.notExists(link);
@@ -1089,17 +1121,17 @@ public void testSymlinkWithNullInput() throws IOException {
     // Create the same symbolic link
     // The operation should fail and returns 1
     int result = FileUtil.symLink(null, null);
-    Assert.assertEquals(1, result);
+    assertEquals(1, result);
 
     // Create the same symbolic link
     // The operation should fail and returns 1
     result = FileUtil.symLink(file.getAbsolutePath(), null);
-    Assert.assertEquals(1, result);
+    assertEquals(1, result);
 
     // Create the same symbolic link
     // The operation should fail and returns 1
     result = FileUtil.symLink(null, link.getAbsolutePath());
-    Assert.assertEquals(1, result);
+    assertEquals(1, result);
   }
 
   /**
@@ -1118,13 +1150,13 @@ public void testSymlinkFileAlreadyExists() throws IOException {
     int result1 =
         FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
-    Assert.assertEquals(0, result1);
+    assertEquals(0, result1);
 
     // Create the same symbolic link
     // The operation should fail and returns 1
     result1 = FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
-    Assert.assertEquals(1, result1);
+    assertEquals(1, result1);
   }
 
   /**
@@ -1145,7 +1177,7 @@ public void testSymlinkSameFile() throws IOException {
     int result =
         FileUtil.symLink(file.getAbsolutePath(), file.getAbsolutePath());
 
-    Assert.assertEquals(0, result);
+    assertEquals(0, result);
   }
 
   /**
@@ -1166,13 +1198,13 @@ public void testSymlink2DifferentFile() throws IOException {
     int result =
         FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
-    Assert.assertEquals(0, result);
+    assertEquals(0, result);
 
     // The operation should fail and returns 1
     result =
         FileUtil.symLink(fileSecond.getAbsolutePath(), link.getAbsolutePath());
 
-    Assert.assertEquals(1, result);
+    assertEquals(1, result);
   }
 
   /**
@@ -1193,13 +1225,13 @@ public void testSymlink2DifferentLinks() throws IOException {
     int result =
         FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
-    Assert.assertEquals(0, result);
+    assertEquals(0, result);
 
     // The operation should succeed
     result =
         FileUtil.symLink(file.getAbsolutePath(), linkSecond.getAbsolutePath());
 
-    Assert.assertEquals(0, result);
+    assertEquals(0, result);
   }
 
   private void doUntarAndVerify(File tarFile, File untarDir) 
@@ -1212,24 +1244,25 @@ private void doUntarAndVerify(File tarFile, File untarDir)
     String parentDir = untarDir.getCanonicalPath() + Path.SEPARATOR + "name";
     File testFile = new File(parentDir + Path.SEPARATOR + "version");
     Verify.exists(testFile);
-    Assert.assertTrue(testFile.length() == 0);
+    assertTrue(testFile.length() == 0);
     String imageDir = parentDir + Path.SEPARATOR + "image";
     testFile = new File(imageDir + Path.SEPARATOR + "fsimage");
     Verify.exists(testFile);
-    Assert.assertTrue(testFile.length() == 157);
+    assertTrue(testFile.length() == 157);
     String currentDir = parentDir + Path.SEPARATOR + "current";
     testFile = new File(currentDir + Path.SEPARATOR + "fsimage");
     Verify.exists(testFile);
-    Assert.assertTrue(testFile.length() == 4331);
+    assertTrue(testFile.length() == 4331);
     testFile = new File(currentDir + Path.SEPARATOR + "edits");
     Verify.exists(testFile);
-    Assert.assertTrue(testFile.length() == 1033);
+    assertTrue(testFile.length() == 1033);
     testFile = new File(currentDir + Path.SEPARATOR + "fstime");
     Verify.exists(testFile);
-    Assert.assertTrue(testFile.length() == 8);
+    assertTrue(testFile.length() == 8);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUntar() throws IOException {
     String tarGzFileName = System.getProperty("test.cache.data",
         "target/test/cache") + "/test-untar.tgz";
@@ -1247,7 +1280,8 @@ public void testUntar() throws IOException {
    * This will test different codepaths on Windows from unix,
    * but both MUST throw an IOE of some kind.
    */
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUntarMissingFile() throws Throwable {
     File dataDir = GenericTestUtils.getTestDir();
     File tarFile = new File(dataDir, "missing; true");
@@ -1262,7 +1296,8 @@ public void testUntarMissingFile() throws Throwable {
    * This is how {@code FileUtil.unTar(File, File}
    * will behave on Windows,
    */
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUntarMissingFileThroughJava() throws Throwable {
     File dataDir = GenericTestUtils.getTestDir();
     File tarFile = new File(dataDir, "missing; true");
@@ -1274,15 +1309,16 @@ public void testUntarMissingFileThroughJava() throws Throwable {
         FileUtil.unTarUsingJava(tarFile, untarDir, false));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testCreateJarWithClassPath() throws Exception {
     // create files expected to match a wildcard
     List<File> wildcardMatches = Arrays.asList(new File(tmp, "wildcard1.jar"),
       new File(tmp, "wildcard2.jar"), new File(tmp, "wildcard3.JAR"),
       new File(tmp, "wildcard4.JAR"));
     for (File wildcardMatch: wildcardMatches) {
-      Assert.assertTrue("failure creating file: " + wildcardMatch,
-        wildcardMatch.createNewFile());
+      assertTrue(wildcardMatch.createNewFile(),
+          "failure creating file: " + wildcardMatch);
     }
 
     // create non-jar files, which we expect to not be included in the classpath
@@ -1297,22 +1333,24 @@ public void testCreateJarWithClassPath() throws Exception {
     List<String> classPaths = Arrays.asList("", "cp1.jar", "cp2.jar", wildcardPath,
       "cp3.jar", nonExistentSubdir);
     String inputClassPath = StringUtils.join(File.pathSeparator, classPaths);
-    String[] jarCp = FileUtil.createJarWithClassPath(inputClassPath + File.pathSeparator + "unexpandedwildcard/*",
-      new Path(tmp.getCanonicalPath()), System.getenv());
+    String[] jarCp = FileUtil.createJarWithClassPath(inputClassPath +
+        File.pathSeparator + "unexpandedwildcard/*",
+        new Path(tmp.getCanonicalPath()), System.getenv());
     String classPathJar = jarCp[0];
-    assertNotEquals("Unexpanded wildcard was not placed in extra classpath", jarCp[1].indexOf("unexpanded"), -1);
+    assertNotEquals(jarCp[1].indexOf("unexpanded"), -1,
+        "Unexpanded wildcard was not placed in extra classpath");
 
     // verify classpath by reading manifest from jar file
     JarFile jarFile = null;
     try {
       jarFile = new JarFile(classPathJar);
       Manifest jarManifest = jarFile.getManifest();
-      Assert.assertNotNull(jarManifest);
+      assertNotNull(jarManifest);
       Attributes mainAttributes = jarManifest.getMainAttributes();
-      Assert.assertNotNull(mainAttributes);
-      Assert.assertTrue(mainAttributes.containsKey(Attributes.Name.CLASS_PATH));
+      assertNotNull(mainAttributes);
+      assertTrue(mainAttributes.containsKey(Attributes.Name.CLASS_PATH));
       String classPathAttr = mainAttributes.getValue(Attributes.Name.CLASS_PATH);
-      Assert.assertNotNull(classPathAttr);
+      assertNotNull(classPathAttr);
       List<String> expectedClassPaths = new ArrayList<String>();
       for (String classPath: classPaths) {
         if (classPath.length() == 0) {
@@ -1346,7 +1384,7 @@ public void testCreateJarWithClassPath() throws Exception {
       List<String> actualClassPaths = Arrays.asList(classPathAttr.split(" "));
       Collections.sort(expectedClassPaths);
       Collections.sort(actualClassPaths);
-      Assert.assertEquals(expectedClassPaths, actualClassPaths);
+      assertEquals(expectedClassPaths, actualClassPaths);
     } finally {
       if (jarFile != null) {
         try {
@@ -1361,8 +1399,8 @@ public void testCreateJarWithClassPath() throws Exception {
   @Test
   public void testGetJarsInDirectory() throws Exception {
     List<Path> jars = FileUtil.getJarsInDirectory("/foo/bar/bogus/");
-    assertTrue("no jars should be returned for a bogus path",
-        jars.isEmpty());
+    assertTrue(jars.isEmpty(),
+        "no jars should be returned for a bogus path");
 
 
     // create jar files to be returned
@@ -1370,7 +1408,7 @@ public void testGetJarsInDirectory() throws Exception {
     File jar2 = new File(tmp, "wildcard2.JAR");
     List<File> matches = Arrays.asList(jar1, jar2);
     for (File match: matches) {
-      assertTrue("failure creating file: " + match, match.createNewFile());
+      assertTrue(match.createNewFile(), "failure creating file: " + match);
     }
 
     // create non-jar files, which we expect to not be included in the result
@@ -1381,16 +1419,16 @@ public void testGetJarsInDirectory() throws Exception {
     // pass in the directory
     String directory = tmp.getCanonicalPath();
     jars = FileUtil.getJarsInDirectory(directory);
-    assertEquals("there should be 2 jars", 2, jars.size());
+    assertEquals(2, jars.size(), "there should be 2 jars");
     for (Path jar: jars) {
       URL url = jar.toUri().toURL();
-      assertTrue("the jar should match either of the jars",
-          url.equals(jar1.getCanonicalFile().toURI().toURL()) ||
-          url.equals(jar2.getCanonicalFile().toURI().toURL()));
+      assertTrue(url.equals(jar1.getCanonicalFile().toURI().toURL()) ||
+          url.equals(jar2.getCanonicalFile().toURI().toURL()),
+          "the jar should match either of the jars");
     }
   }
 
-  @Ignore
+  @Disabled
   public void setupCompareFs() {
     // Set up Strings
     String host1 = "1.2.3.4";
@@ -1434,7 +1472,7 @@ public void setupCompareFs() {
       when(InetAddress.getByName(uris3)).thenReturn(inet3);
       when(InetAddress.getByName(uris4)).thenReturn(inet4);
       when(InetAddress.getByName(uris5)).thenReturn(inet5);
-    } catch (UnknownHostException ignored) {
+    } catch (UnknownHostException | MissingMethodInvocationException ignored) {
     }
 
     fs1 = mock(FileSystem.class);
@@ -1468,7 +1506,8 @@ public void testCompareFsDirectories() throws Exception {
     assertFalse(FileUtil.compareFs(fs1, fs6));
   }
 
-  @Test(timeout = 8000)
+  @Test
+  @Timeout(value = 8)
   public void testCreateSymbolicLinkUsingJava() throws IOException {
     final File simpleTar = new File(del, FILE);
     OutputStream os = new FileOutputStream(simpleTar);
@@ -1502,39 +1541,40 @@ public void testCreateSymbolicLinkUsingJava() throws IOException {
     }
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void testCreateArbitrarySymlinkUsingJava() throws IOException {
-    final File simpleTar = new File(del, FILE);
-    OutputStream os = new FileOutputStream(simpleTar);
-
-    File rootDir = new File("tmp");
-    try (TarArchiveOutputStream tos = new TarArchiveOutputStream(os)) {
-      tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
-
-      // Create arbitrary dir
-      File arbitraryDir = new File(rootDir, "arbitrary-dir/");
-      Verify.mkdirs(arbitraryDir);
-
-      // We will tar from the tar-root lineage
-      File tarRoot = new File(rootDir, "tar-root/");
-      File symlinkRoot = new File(tarRoot, "dir1/");
-      Verify.mkdirs(symlinkRoot);
-
-      // Create Symbolic Link to an arbitrary dir
-      java.nio.file.Path symLink = Paths.get(symlinkRoot.getPath(), "sl");
-      Files.createSymbolicLink(symLink, arbitraryDir.toPath().toAbsolutePath());
-
-      // Put entries in tar file
-      putEntriesInTar(tos, tarRoot);
-      putEntriesInTar(tos, new File(symLink.toFile(), "dir-outside-tar-root/"));
-      tos.close();
-
-      // Untar using Java
-      File untarFile = new File(rootDir, "extracted");
-      FileUtil.unTarUsingJava(simpleTar, untarFile, false);
-    } finally {
-      FileUtils.deleteDirectory(rootDir);
-    }
+    assertThrows(IOException.class, () -> {
+      final File simpleTar = new File(del, FILE);
+      OutputStream os = new FileOutputStream(simpleTar);
+      File rootDir = new File("tmp");
+      try (TarArchiveOutputStream tos = new TarArchiveOutputStream(os)) {
+        tos.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
+
+        // Create arbitrary dir
+        File arbitraryDir = new File(rootDir, "arbitrary-dir/");
+        Verify.mkdirs(arbitraryDir);
+
+        // We will tar from the tar-root lineage
+        File tarRoot = new File(rootDir, "tar-root/");
+        File symlinkRoot = new File(tarRoot, "dir1/");
+        Verify.mkdirs(symlinkRoot);
+
+        // Create Symbolic Link to an arbitrary dir
+        java.nio.file.Path symLink = Paths.get(symlinkRoot.getPath(), "sl");
+        Files.createSymbolicLink(symLink, arbitraryDir.toPath().toAbsolutePath());
+
+        // Put entries in tar file
+        putEntriesInTar(tos, tarRoot);
+        putEntriesInTar(tos, new File(symLink.toFile(), "dir-outside-tar-root/"));
+        tos.close();
+
+        // Untar using Java
+        File untarFile = new File(rootDir, "extracted");
+        FileUtil.unTarUsingJava(simpleTar, untarFile, false);
+      } finally {
+        FileUtils.deleteDirectory(rootDir);
+      }
+    });
   }
 
   private void putEntriesInTar(TarArchiveOutputStream tos, File f)
@@ -1578,7 +1618,7 @@ private void putEntriesInTar(TarArchiveOutputStream tos, File f)
   @Test
   public void testReadSymlinkWithNullInput() {
     String result = FileUtil.readLink(null);
-    Assert.assertEquals("", result);
+    assertEquals("", result);
   }
 
   /**
@@ -1595,7 +1635,7 @@ public void testReadSymlink() throws IOException {
     FileUtil.symLink(file.getAbsolutePath(), link.getAbsolutePath());
 
     String result = FileUtil.readLink(link);
-    Assert.assertEquals(file.getAbsolutePath(), result);
+    assertEquals(file.getAbsolutePath(), result);
   }
 
   @Test
@@ -1626,7 +1666,7 @@ public void testReadSymlinkWithAFileAsInput() throws IOException {
     File file = new File(del, FILE);
 
     String result = FileUtil.readLink(file);
-    Assert.assertEquals("", result);
+    assertEquals("", result);
 
     Verify.delete(file);
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java
index 4204faaada3..c0406c43eeb 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestPath.java
@@ -18,8 +18,8 @@
 
 package org.apache.hadoop.fs;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -40,10 +40,11 @@
 
 import static org.apache.hadoop.test.PlatformAssumptions.assumeNotWindows;
 import static org.apache.hadoop.test.PlatformAssumptions.assumeWindows;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  * Test Hadoop Filesystem Paths.
@@ -76,7 +77,8 @@ public static String mergeStatuses(FileStatus statuses[]) {
     return mergeStatuses(paths);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testToString() {
     toStringTest("/");
     toStringTest("/foo");
@@ -109,7 +111,8 @@ private void toStringTest(String pathString) {
     assertEquals(pathString, new Path(pathString).toString());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testNormalize() throws URISyntaxException {
     assertEquals("", new Path(".").toString());
     assertEquals("..", new Path("..").toString());
@@ -133,7 +136,8 @@ public void testNormalize() throws URISyntaxException {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testIsAbsolute() {
     assertTrue(new Path("/").isAbsolute());
     assertTrue(new Path("/foo").isAbsolute());
@@ -146,7 +150,8 @@ public void testIsAbsolute() {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testParent() {
     assertEquals(new Path("/foo"), new Path("/foo/bar").getParent());
     assertEquals(new Path("foo"), new Path("foo/bar").getParent());
@@ -157,7 +162,8 @@ public void testParent() {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testChild() {
     assertEquals(new Path("."), new Path(".", "."));
     assertEquals(new Path("/"), new Path("/", "."));
@@ -177,7 +183,8 @@ public void testChild() {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testPathThreeArgContructor() {
     assertEquals(new Path("foo"), new Path(null, null, "foo"));
     assertEquals(new Path("scheme:///foo"), new Path("scheme", null, "/foo"));
@@ -213,12 +220,14 @@ public void testPathThreeArgContructor() {
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testEquals() {
     assertFalse(new Path("/").equals(new Path("/foo")));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testDots() {
     // Test Path(String) 
     assertEquals(new Path("/foo/bar/baz").toString(), "/foo/bar/baz");
@@ -257,7 +266,8 @@ public void testDots() {
   }
 
   /** Test that Windows paths are correctly handled */
-  @Test (timeout = 5000)
+  @Test
+  @Timeout(value = 5)
   public void testWindowsPaths() throws URISyntaxException, IOException {
     assumeWindows();
 
@@ -268,7 +278,8 @@ public void testWindowsPaths() throws URISyntaxException, IOException {
   }
 
   /** Test invalid paths on Windows are correctly rejected */
-  @Test (timeout = 5000)
+  @Test
+  @Timeout(value = 5)
   public void testInvalidWindowsPaths() throws URISyntaxException, IOException {
     assumeWindows();
 
@@ -286,20 +297,23 @@ public void testInvalidWindowsPaths() throws URISyntaxException, IOException {
   }
 
   /** Test Path objects created from other Path objects */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testChildParentResolution() throws URISyntaxException, IOException {
     Path parent = new Path("foo1://bar1/baz1");
     Path child  = new Path("foo2://bar2/baz2");
     assertEquals(child, new Path(parent, child));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testScheme() throws java.io.IOException {
     assertEquals("foo:/bar", new Path("foo:/","/bar").toString());
     assertEquals("foo://bar/baz", new Path("foo://bar/","/baz").toString());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testURI() throws URISyntaxException, IOException {
     URI uri = new URI("file:///bar#baz");
     Path path = new Path(uri);
@@ -322,18 +336,16 @@ public void testURI() throws URISyntaxException, IOException {
   }
 
   /** Test URIs created from Path objects */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testPathToUriConversion() throws URISyntaxException, IOException {
     // Path differs from URI in that it ignores the query part..
-    assertEquals("? mark char in to URI",
-            new URI(null, null, "/foo?bar", null, null),
-            new Path("/foo?bar").toUri());
-    assertEquals("escape slashes chars in to URI",
-            new URI(null, null, "/foo\"bar", null, null),
-            new Path("/foo\"bar").toUri());
-    assertEquals("spaces in chars to URI",
-            new URI(null, null, "/foo bar", null, null),
-            new Path("/foo bar").toUri());
+    assertEquals(new URI(null, null, "/foo?bar", null, null),
+        new Path("/foo?bar").toUri(), "? mark char in to URI");
+    assertEquals(new URI(null, null, "/foo\"bar", null, null),
+        new Path("/foo\"bar").toUri(), "escape slashes chars in to URI");
+    assertEquals(new URI(null, null, "/foo bar", null, null),
+        new Path("/foo bar").toUri(), "spaces in chars to URI");
     // therefore "foo?bar" is a valid Path, so a URI created from a Path
     // has path "foo?bar" where in a straight URI the path part is just "foo"
     assertEquals("/foo?bar",
@@ -350,7 +362,8 @@ public void testPathToUriConversion() throws URISyntaxException, IOException {
   }
 
   /** Test reserved characters in URIs (and therefore Paths) */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testReservedCharacters() throws URISyntaxException, IOException {
     // URI encodes the path
     assertEquals("/foo%20bar",
@@ -380,7 +393,8 @@ public void testReservedCharacters() throws URISyntaxException, IOException {
                 toURL().getPath());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testMakeQualified() throws URISyntaxException {
     URI defaultUri = new URI("hdfs://host1/dir1");
     URI wd         = new URI("hdfs://host2/dir2");
@@ -394,7 +408,8 @@ public void testMakeQualified() throws URISyntaxException {
                  new Path("file").makeQualified(defaultUri, new Path(wd)));
  }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetName() {
     assertEquals("", new Path("/").getName());
     assertEquals("foo", new Path("foo").getName());
@@ -404,7 +419,8 @@ public void testGetName() {
     assertEquals("bar", new Path("hdfs://host/foo/bar").getName());
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testAvroReflect() throws Exception {
     // Avro expects explicitely stated, trusted packages used for (de-)serialization
     System.setProperty(ConfigConstants.CONFIG_AVRO_SERIALIZABLE_PACKAGES, "org.apache.hadoop.fs");
@@ -413,7 +429,8 @@ public void testAvroReflect() throws Exception {
        "{\"type\":\"string\",\"java-class\":\"org.apache.hadoop.fs.Path\"}");
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGlobEscapeStatus() throws Exception {
     // This test is not meaningful on Windows where * is disallowed in file name.
     assumeNotWindows();
@@ -472,7 +489,8 @@ public void testGlobEscapeStatus() throws Exception {
     assertEquals(new Path(testRoot, "*/f"), stats[0].getPath());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testMergePaths() {
     assertEquals(new Path("/foo/bar"),
       Path.mergePaths(new Path("/foo"),
@@ -506,7 +524,8 @@ public void testMergePaths() {
         new Path("file://fileauthority/bar")));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testIsWindowsAbsolutePath() {
     assumeWindows();
     assertTrue(Path.isWindowsAbsolutePath("C:\\test", false));
@@ -518,7 +537,8 @@ public void testIsWindowsAbsolutePath() {
     assertFalse(Path.isWindowsAbsolutePath("/C:test", true));
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSerDeser() throws Throwable {
     Path source = new Path("hdfs://localhost:4040/scratch");
     ByteArrayOutputStream baos = new ByteArrayOutputStream(256);
@@ -528,15 +548,16 @@ public void testSerDeser() throws Throwable {
     ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
     try (ObjectInputStream ois = new ObjectInputStream(bais)) {
       Path deser = (Path) ois.readObject();
-      Assert.assertEquals(source, deser);
+      assertEquals(source, deser);
     }
 
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSuffixFromRoot() {
     Path root = new Path("/");
-    Assert.assertNull(root.getParent());
-    Assert.assertEquals(new Path("/bar"), root.suffix("bar"));
+    assertNull(root.getParent());
+    assertEquals(new Path("/bar"), root.suffix("bar"));
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestStat.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestStat.java
index 0e518e28851..6f64cba4606 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestStat.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/TestStat.java
@@ -17,19 +17,20 @@
  */
 package org.apache.hadoop.fs;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 import java.io.BufferedReader;
 import java.io.FileNotFoundException;
 import java.io.StringReader;
 
 import org.apache.hadoop.conf.Configuration;
-import org.junit.Assume;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 public class TestStat extends FileSystemTestHelper {
   static {
@@ -37,7 +38,7 @@ public class TestStat extends FileSystemTestHelper {
   }
   private static Stat stat;
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws Exception {
     stat = new Stat(new Path("/dummypath"),
         4096l, false, FileSystem.get(new Configuration()));
@@ -95,7 +96,8 @@ void test() throws Exception {
     }
   }
 
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testStatLinux() throws Exception {
     String[] symlinks = new String[] {
         "6,symbolic link,1373584236,1373584236,777,andrew,andrew,`link' -> `target'",
@@ -110,7 +112,8 @@ public void testStatLinux() throws Exception {
     linux.test();
   }
 
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testStatFreeBSD() throws Exception {
     String[] symlinks = new String[] {
         "6,Symbolic Link,1373508941,1373508941,120755,awang,awang,`link' -> `target'"
@@ -125,9 +128,10 @@ public void testStatFreeBSD() throws Exception {
     freebsd.test();
   }
 
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testStatFileNotFound() throws Exception {
-    Assume.assumeTrue(Stat.isAvailable());
+    assumeTrue(Stat.isAvailable());
     try {
       stat.getFileStatus();
       fail("Expected FileNotFoundException");
@@ -136,14 +140,16 @@ public void testStatFileNotFound() throws Exception {
     }
   }
 
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testStatEnvironment() throws Exception {
     assertEquals("C", stat.getEnvironment("LANG"));
   }
 
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testStat() throws Exception {
-    Assume.assumeTrue(Stat.isAvailable());
+    assumeTrue(Stat.isAvailable());
     FileSystem fs = FileSystem.getLocal(new Configuration());
     Path testDir = new Path(getTestRootPath(fs), "teststat");
     fs.mkdirs(testDir);
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractFSContract.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractFSContract.java
index 76d3116c3ab..57894ff2e48 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractFSContract.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/AbstractFSContract.java
@@ -18,11 +18,12 @@
 
 package org.apache.hadoop.fs.contract;
 
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -84,7 +85,7 @@ public void teardown() throws IOException {
    */
   protected void addConfResource(String resource) {
     boolean found = maybeAddConfResource(resource);
-    Assert.assertTrue("Resource not found " + resource, found);
+    assertTrue(found, "Resource not found " + resource);
   }
 
   /**
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
index 518f18bdf8c..e894f87078c 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ContractTestUtils.java
@@ -36,8 +36,7 @@
 import org.apache.hadoop.util.functional.RemoteIterators;
 import org.apache.hadoop.util.functional.FutureIO;
 
-import org.assertj.core.api.Assertions;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 import org.junit.AssumptionViolatedException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,11 +65,12 @@
 import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.IO_FILE_BUFFER_SIZE_DEFAULT;
 import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.IO_FILE_BUFFER_SIZE_KEY;
 import static org.apache.hadoop.util.functional.RemoteIterators.foreach;
+import static org.assertj.core.api.Assertions.assertThat;
 
 /**
  * Utilities used across test cases.
  */
-public class ContractTestUtils extends Assert {
+public class ContractTestUtils extends Assertions {
 
   private static final Logger LOG =
       LoggerFactory.getLogger(ContractTestUtils.class);
@@ -99,11 +99,9 @@ public static void assertPropertyEquals(Properties props,
                                           String expected) {
     String val = props.getProperty(key);
     if (expected == null) {
-      assertNull("Non null property " + key + " = " + val, val);
+      assertNull(val, "Non null property " + key + " = " + val);
     } else {
-      assertEquals("property " + key + " = " + val,
-                          expected,
-                          val);
+      assertEquals(expected, val, "property " + key + " = " + val);
     }
   }
 
@@ -147,7 +145,7 @@ public static void writeAndRead(FileSystem fs,
     if (delete) {
       rejectRootOperation(path);
       boolean deleted = fs.delete(path, false);
-      assertTrue("Deleted", deleted);
+      assertTrue(deleted, "Deleted");
       assertPathDoesNotExist(fs, "Cleanup failed", path);
     }
   }
@@ -187,9 +185,8 @@ public static void writeDataset(FileSystem fs,
   public static void writeDataset(FileSystem fs, Path path, byte[] src,
       int len, int buffersize, boolean overwrite, boolean useBuilder)
       throws IOException {
-    assertTrue(
-      "Not enough data in source array to write " + len + " bytes",
-      src.length >= len);
+    assertTrue(src.length >= len,
+        "Not enough data in source array to write " + len + " bytes");
     FSDataOutputStream out;
     if (useBuilder) {
       out = fs.createFile(path)
@@ -308,7 +305,7 @@ public static void verifyFileContents(FileSystem fs,
     FileStatus stat = fs.getFileStatus(path);
     assertIsFile(path, stat);
     String statText = stat.toString();
-    assertEquals("wrong length " + statText, original.length, stat.getLen());
+    assertEquals(original.length, stat.getLen(), "wrong length " + statText);
     byte[] bytes = readDataset(fs, path, original.length);
     compareByteArrays(original, bytes, original.length);
   }
@@ -343,8 +340,8 @@ public static void verifyRead(FSDataInputStream stm, byte[] fileContents,
   public static void compareByteArrays(byte[] original,
                                        byte[] received,
                                        int len) {
-    assertEquals("Number of bytes read != number written",
-                        len, received.length);
+    assertEquals(len, received.length,
+        "Number of bytes read != number written");
     int errors = 0;
     int firstErrorByte = -1;
     for (int i = 0; i < len; i++) {
@@ -488,8 +485,8 @@ public static boolean rm(FileSystem fileSystem,
   public static void rename(FileSystem fileSystem, Path src, Path dst)
       throws IOException {
     rejectRootOperation(src, false);
-    assertTrue("rename(" + src + ", " + dst + ") failed",
-        fileSystem.rename(src, dst));
+    assertTrue(fileSystem.rename(src, dst),
+        "rename(" + src + ", " + dst + ") failed");
     assertPathDoesNotExist(fileSystem, "renamed source dir", src);
   }
 
@@ -602,7 +599,7 @@ public static void skip(String message) {
    * @param thrown a (possibly null) throwable to init the cause with
    * @throws AssertionError with the text and throwable -always
    */
-  public static void fail(String text, Throwable thrown) {
+  public static Object fail(String text, Throwable thrown) {
     throw new AssertionError(text, thrown);
   }
 
@@ -616,10 +613,8 @@ public static void fail(String text, Throwable thrown) {
   public static void assertFileHasLength(FileSystem fs, Path path,
                                          int expected) throws IOException {
     FileStatus status = fs.getFileStatus(path);
-    assertEquals(
-        "Wrong file length of file " + path + " status: " + status,
-        expected,
-        status.getLen());
+    assertEquals(expected, status.getLen(),
+        "Wrong file length of file " + path + " status: " + status);
   }
 
   /**
@@ -640,8 +635,8 @@ public static void assertIsDirectory(FileSystem fs,
    * @param fileStatus stats to check
    */
   public static void assertIsDirectory(FileStatus fileStatus) {
-    assertTrue("Should be a directory -but isn't: " + fileStatus,
-               fileStatus.isDirectory());
+    assertTrue(fileStatus.isDirectory(),
+        "Should be a directory -but isn't: " + fileStatus);
   }
 
   /**
@@ -654,7 +649,7 @@ public static void assertIsDirectory(FileStatus fileStatus) {
   public static void assertErasureCoded(final FileSystem fs, final Path path)
       throws IOException {
     FileStatus fileStatus = fs.getFileStatus(path);
-    assertTrue(path + " must be erasure coded!", fileStatus.isErasureCoded());
+    assertTrue(fileStatus.isErasureCoded(), path + " must be erasure coded!");
   }
 
   /**
@@ -667,8 +662,8 @@ public static void assertErasureCoded(final FileSystem fs, final Path path)
   public static void assertNotErasureCoded(final FileSystem fs,
       final Path path) throws IOException {
     FileStatus fileStatus = fs.getFileStatus(path);
-    assertFalse(path + " should not be erasure coded!",
-        fileStatus.isErasureCoded());
+    assertFalse(fileStatus.isErasureCoded(),
+        path + " should not be erasure coded!");
   }
 
   /**
@@ -817,7 +812,7 @@ public static void assertDeleted(FileSystem fs,
     boolean deleted = fs.delete(file, recursive);
     if (!deleted) {
       String dir = ls(fs, file.getParent());
-      assertTrue("Delete failed on " + file + ": " + dir, deleted);
+      assertTrue(deleted, "Delete failed on " + file + ": " + dir);
     }
     assertPathDoesNotExist(fs, "Deleted file", file);
   }
@@ -967,10 +962,10 @@ public static void assertIsFile(FileContext fileContext, Path filename)
    */
   public static void assertIsFile(Path filename, FileStatus status) {
     String fileInfo = filename + "  " + status;
-    assertFalse("File claims to be a directory " + fileInfo,
-                status.isDirectory());
-    assertFalse("File claims to be a symlink " + fileInfo,
-                       status.isSymlink());
+    assertFalse(status.isDirectory(),
+        "File claims to be a directory " + fileInfo);
+    assertFalse(status.isSymlink(),
+        "File claims to be a symlink " + fileInfo);
   }
 
   /**
@@ -1135,9 +1130,8 @@ public static void assertListStatusFinds(FileSystem fs,
         found = true;
       }
     }
-    assertTrue("Path " + subdir
-                      + " not found in directory " + dir + ":" + builder,
-                      found);
+    assertTrue(found,
+        "Path " + subdir + " not found in directory " + dir + ":" + builder);
   }
 
   /**
@@ -1149,7 +1143,7 @@ public static void assertListStatusFinds(FileSystem fs,
    * @throws IOException IO Problem
    */
   public static void assertMkdirs(FileSystem fs, Path dir) throws IOException {
-    assertTrue("mkdirs(" + dir + ") returned false", fs.mkdirs(dir));
+    assertTrue(fs.mkdirs(dir), "mkdirs(" + dir + ") returned false");
   }
 
   /**
@@ -1180,8 +1174,8 @@ public static void validateFileContent(byte[] concat, byte[][] bytes) {
         break;
       }
     }
-    assertFalse("File content of file is not as expected at offset " + idx,
-                mismatch);
+    assertFalse(mismatch,
+        "File content of file is not as expected at offset " + idx);
   }
 
   /**
@@ -1256,7 +1250,7 @@ public static void assertDatasetEquals(
       int o = readOffset + i;
       final byte orig = originalData[o];
       final byte current = data.get();
-      Assertions.assertThat(current)
+      assertThat(current)
           .describedAs("%s with read offset %d: data[0x%02X] != DATASET[0x%02X]",
                       operation, o, i, current)
           .isEqualTo(orig);
@@ -1716,23 +1710,23 @@ public static List<LocatedFileStatus> toListThroughNextCallsAlone(
   public static void assertCapabilities(
       Object stream, String[] shouldHaveCapabilities,
       String[] shouldNotHaveCapabilities) {
-    assertTrue("Stream should be instanceof StreamCapabilities",
-        stream instanceof StreamCapabilities);
+    assertTrue(stream instanceof StreamCapabilities,
+        "Stream should be instanceof StreamCapabilities");
 
     StreamCapabilities source = (StreamCapabilities) stream;
     if (shouldHaveCapabilities != null) {
       for (String shouldHaveCapability : shouldHaveCapabilities) {
-        assertTrue("Should have capability: " + shouldHaveCapability
-                + " in " + source,
-            source.hasCapability(shouldHaveCapability));
+        assertTrue(source.hasCapability(shouldHaveCapability),
+            "Should have capability: " + shouldHaveCapability
+            + " in " + source);
       }
     }
 
     if (shouldNotHaveCapabilities != null) {
       for (String shouldNotHaveCapability : shouldNotHaveCapabilities) {
-        assertFalse("Should not have capability: " + shouldNotHaveCapability
-                + " in " + source,
-            source.hasCapability(shouldNotHaveCapability));
+        assertFalse(source.hasCapability(shouldNotHaveCapability),
+            "Should not have capability: " + shouldNotHaveCapability
+            + " in " + source);
       }
     }
   }
@@ -1778,10 +1772,10 @@ public static void assertHasPathCapabilities(
       final String...capabilities) throws IOException {
 
     for (String shouldHaveCapability: capabilities) {
-      assertTrue("Should have capability: " + shouldHaveCapability
-              + " under " + path
-              + " in " + source,
-          source.hasPathCapability(path, shouldHaveCapability));
+      assertTrue(source.hasPathCapability(path, shouldHaveCapability),
+          "Should have capability: " + shouldHaveCapability
+          + " under " + path
+          + " in " + source);
     }
   }
 
@@ -1799,9 +1793,9 @@ public static void assertLacksPathCapabilities(
       final String...capabilities) throws IOException {
 
     for (String shouldHaveCapability: capabilities) {
-      assertFalse("Path  must not support capability: " + shouldHaveCapability
-              + " under " + path,
-          source.hasPathCapability(path, shouldHaveCapability));
+      assertFalse(source.hasPathCapability(path, shouldHaveCapability),
+          "Path  must not support capability: " + shouldHaveCapability
+          + " under " + path);
     }
   }
 
@@ -1913,7 +1907,7 @@ public TreeScanResults(RemoteIterator<? extends FileStatus> results)
      * @param stats statistics array. Must not be null.
      */
     public TreeScanResults(FileStatus[] stats) {
-      assertNotNull("Null file status array", stats);
+      assertNotNull(stats, "Null file status array");
       for (FileStatus stat : stats) {
         add(stat);
       }
@@ -2025,12 +2019,12 @@ public int hashCode() {
      */
     public void assertSizeEquals(String text, long f, long d, long o) {
       String self = dump();
-      Assert.assertEquals(text + ": file count in " + self,
-          f, getFileCount());
-      Assert.assertEquals(text + ": directory count in " + self,
-          d, getDirCount());
-      Assert.assertEquals(text + ": 'other' count in " + self,
-          o, getOtherCount());
+      assertEquals(f, getFileCount(),
+          text + ": file count in " + self);
+      assertEquals(d, getDirCount(),
+          text + ": directory count in " + self);
+      assertEquals(o, getOtherCount(),
+          text + ": 'other' count in " + self);
     }
 
     /**
@@ -2055,13 +2049,13 @@ public void assertEquivalent(TreeScanResults that) {
     public void assertFieldsEquivalent(String fieldname,
         TreeScanResults that,
         List<Path> ours, List<Path> theirs) {
-      Assertions.assertThat(ours).
+      assertThat(ours).
           describedAs("list of %s", fieldname)
           .doesNotHaveDuplicates();
-      Assertions.assertThat(theirs).
+      assertThat(theirs).
           describedAs("list of %s in %s", fieldname, that)
           .doesNotHaveDuplicates();
-      Assertions.assertThat(ours)
+      assertThat(ours)
           .describedAs("Elements of %s", fieldname)
           .containsExactlyInAnyOrderElementsOf(theirs);
 
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ftp/FTPContract.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ftp/FTPContract.java
index 62648ec58bc..5a9929e4e6d 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ftp/FTPContract.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/ftp/FTPContract.java
@@ -25,7 +25,7 @@
 
 import java.net.URI;
 
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 /**
  * The contract of FTP; requires the option "test.testdir" to be set
@@ -55,7 +55,7 @@ public String getScheme() {
   @Override
   public Path getTestPath() {
     String pathString = getOption(TEST_FS_TESTDIR, null);
-    assertNotNull("Undefined test option " + TEST_FS_TESTDIR, pathString);
+    assertNotNull(pathString, "Undefined test option " + TEST_FS_TESTDIR);
     Path path = new Path(pathString);
     return path;
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/rawlocal/TestRawLocalContractUnderlyingFileBehavior.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/rawlocal/TestRawLocalContractUnderlyingFileBehavior.java
index 6eb24985f4f..24e638efa3a 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/rawlocal/TestRawLocalContractUnderlyingFileBehavior.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/contract/rawlocal/TestRawLocalContractUnderlyingFileBehavior.java
@@ -20,17 +20,17 @@
 
 import org.apache.hadoop.conf.Configuration;
 
-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 java.io.File;
 
-public class TestRawLocalContractUnderlyingFileBehavior extends Assert {
+public class TestRawLocalContractUnderlyingFileBehavior extends Assertions {
 
   private static File testDirectory;
 
-  @BeforeClass
+  @BeforeAll
   public static void before() {
     RawlocalFSContract contract =
       new RawlocalFSContract(new Configuration());
@@ -44,6 +44,6 @@ public static void before() {
   public void testDeleteEmptyPath() throws Throwable {
     File nonexistent = new File(testDirectory, "testDeleteEmptyPath");
     assertFalse(nonexistent.exists());
-    assertFalse("nonexistent.delete() returned true", nonexistent.delete());
+    assertFalse(nonexistent.delete(), "nonexistent.delete() returned true");
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestTextCommand.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestTextCommand.java
index d7923823c84..ab4d0b2cc97 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestTextCommand.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/shell/TestTextCommand.java
@@ -19,6 +19,7 @@
 package org.apache.hadoop.fs.shell;
 
 import static org.apache.hadoop.fs.CommonConfigurationKeysPublic.IO_FILE_BUFFER_SIZE_KEY;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 import java.io.File;
@@ -35,15 +36,14 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.hadoop.test.GenericTestUtils;
-import org.assertj.core.api.Assertions;
-import org.junit.Rule;
 import org.junit.jupiter.api.Test;
-import org.junit.rules.Timeout;
+import org.junit.jupiter.api.Timeout;
 
 /**
  * This class tests the logic for displaying the binary formats supported
  * by the Text command.
  */
+@Timeout(30)
 public class TestTextCommand {
   private static final File TEST_ROOT_DIR =
       GenericTestUtils.getTestDir("testText");
@@ -66,9 +66,6 @@ public class TestTextCommand {
   private static final String SEQUENCE_FILE_EXPECTED_OUTPUT =
       "Key1\tValue1\nKey2\tValue2\n";
 
-  @Rule
-  public final Timeout testTimeout = new Timeout(30000);
-
   /**
    * Tests whether binary Avro data files are displayed correctly.
    */
@@ -76,7 +73,7 @@ public class TestTextCommand {
   public void testDisplayForAvroFiles() throws Exception {
     String output = readUsingTextCommand(AVRO_FILENAME,
                                          generateWeatherAvroBinaryData());
-    Assertions.assertThat(output).describedAs("output").isEqualTo(AVRO_EXPECTED_OUTPUT);
+    assertThat(output).describedAs("output").isEqualTo(AVRO_EXPECTED_OUTPUT);
   }
 
   @Test
@@ -86,14 +83,14 @@ public void testDisplayForAvroFilesSmallMultiByteReads() throws Exception {
     createFile(AVRO_FILENAME, generateWeatherAvroBinaryData());
     URI uri = new URI(AVRO_FILENAME);
     String output = readUsingTextCommand(uri, conf);
-    Assertions.assertThat(output).describedAs("output").isEqualTo(AVRO_EXPECTED_OUTPUT);
+    assertThat(output).describedAs("output").isEqualTo(AVRO_EXPECTED_OUTPUT);
   }
 
   @Test
   public void testEmptyAvroFile() throws Exception {
     String output = readUsingTextCommand(AVRO_FILENAME,
                                          generateEmptyAvroBinaryData());
-    Assertions.assertThat(output).describedAs("output").isEmpty();
+    assertThat(output).describedAs("output").isEmpty();
   }
 
   @Test
@@ -138,7 +135,7 @@ public void testAvroFileInputStreamZeroLengthRead() throws Exception {
     URI uri = new URI(AVRO_FILENAME);
     Configuration conf = new Configuration();
     try (InputStream is = getInputStream(uri, conf)) {
-      Assertions.assertThat(is.read(new byte[10], 0, 0)).describedAs("bytes read").isEqualTo(0);
+      assertThat(is.read(new byte[10], 0, 0)).describedAs("bytes read").isEqualTo(0);
     }
   }
 
@@ -149,8 +146,8 @@ public void testAvroFileInputStreamConsistentEOF() throws Exception {
     Configuration conf = new Configuration();
     try (InputStream is = getInputStream(uri, conf)) {
       inputStreamToString(is);
-      Assertions.assertThat(is.read()).describedAs("single byte EOF").isEqualTo(-1);
-      Assertions.assertThat(is.read(new byte[10], 0, 10)).describedAs("multi byte EOF")
+      assertThat(is.read()).describedAs("single byte EOF").isEqualTo(-1);
+      assertThat(is.read(new byte[10], 0, 10)).describedAs("multi byte EOF")
               .isEqualTo(-1);
     }
   }
@@ -164,7 +161,7 @@ public void testAvroFileInputStreamSingleAndMultiByteReads() throws Exception {
         InputStream is2 = getInputStream(uri, conf)) {
       String multiByteReads = inputStreamToString(is1);
       String singleByteReads = inputStreamSingleByteReadsToString(is2);
-      Assertions.assertThat(multiByteReads)
+      assertThat(multiByteReads)
           .describedAs("same bytes read from multi and single byte reads")
           .isEqualTo(singleByteReads);
     }
@@ -177,7 +174,7 @@ public void testAvroFileInputStreamSingleAndMultiByteReads() throws Exception {
   public void testEmptyTextFile() throws Exception {
     byte[] emptyContents = {};
     String output = readUsingTextCommand(TEXT_FILENAME, emptyContents);
-    Assertions.assertThat(output).describedAs("output").isEmpty();
+    assertThat(output).describedAs("output").isEmpty();
   }
 
   /**
@@ -188,7 +185,7 @@ public void testOneByteTextFile() throws Exception {
     byte[] oneByteContents = {'x'};
     String output = readUsingTextCommand(TEXT_FILENAME, oneByteContents);
     String expected = new String(oneByteContents, StandardCharsets.UTF_8);
-    Assertions.assertThat(output).describedAs("output").isEqualTo(expected);
+    assertThat(output).describedAs("output").isEqualTo(expected);
   }
 
   /**
@@ -199,7 +196,7 @@ public void testTwoByteTextFile() throws Exception {
     byte[] twoByteContents = {'x', 'y'};
     String output = readUsingTextCommand(TEXT_FILENAME, twoByteContents);
     String expected = new String(twoByteContents, StandardCharsets.UTF_8);
-    Assertions.assertThat(output).describedAs("output").isEqualTo(expected);
+    assertThat(output).describedAs("output").isEqualTo(expected);
   }
 
   @Test
@@ -208,7 +205,7 @@ public void testDisplayForNonWritableSequenceFile() throws Exception {
     createNonWritableSequenceFile(SEQUENCE_FILENAME, conf);
     URI uri = new URI(SEQUENCE_FILENAME);
     String output = readUsingTextCommand(uri, conf);
-    Assertions.assertThat(output).describedAs("output").isEqualTo(SEQUENCE_FILE_EXPECTED_OUTPUT);
+    assertThat(output).describedAs("output").isEqualTo(SEQUENCE_FILE_EXPECTED_OUTPUT);
   }
 
   @Test
@@ -218,7 +215,7 @@ public void testDisplayForSequenceFileSmallMultiByteReads() throws Exception {
     createNonWritableSequenceFile(SEQUENCE_FILENAME, conf);
     URI uri = new URI(SEQUENCE_FILENAME);
     String output = readUsingTextCommand(uri, conf);
-    Assertions.assertThat(output).describedAs("output").isEqualTo(SEQUENCE_FILE_EXPECTED_OUTPUT);
+    assertThat(output).describedAs("output").isEqualTo(SEQUENCE_FILE_EXPECTED_OUTPUT);
   }
 
   @Test
@@ -227,7 +224,7 @@ public void testEmptySequenceFile() throws Exception {
     createEmptySequenceFile(SEQUENCE_FILENAME, conf);
     URI uri = new URI(SEQUENCE_FILENAME);
     String output = readUsingTextCommand(uri, conf);
-    Assertions.assertThat(output).describedAs("output").isEmpty();
+    assertThat(output).describedAs("output").isEmpty();
   }
 
   @Test
@@ -272,7 +269,7 @@ public void testSequenceFileInputStreamZeroLengthRead() throws Exception {
     createNonWritableSequenceFile(SEQUENCE_FILENAME, conf);
     URI uri = new URI(SEQUENCE_FILENAME);
     try (InputStream is = getInputStream(uri, conf)) {
-      Assertions.assertThat(is.read(new byte[10], 0, 0)).describedAs("bytes read").isEqualTo(0);
+      assertThat(is.read(new byte[10], 0, 0)).describedAs("bytes read").isEqualTo(0);
     }
   }
 
@@ -283,8 +280,8 @@ public void testSequenceFileInputStreamConsistentEOF() throws Exception {
     URI uri = new URI(SEQUENCE_FILENAME);
     try (InputStream is = getInputStream(uri, conf)) {
       inputStreamToString(is);
-      Assertions.assertThat(is.read()).describedAs("single byte EOF").isEqualTo(-1);
-      Assertions.assertThat(is.read(new byte[10], 0, 10)).describedAs("multi byte EOF")
+      assertThat(is.read()).describedAs("single byte EOF").isEqualTo(-1);
+      assertThat(is.read(new byte[10], 0, 10)).describedAs("multi byte EOF")
               .isEqualTo(-1);
     }
   }
@@ -298,7 +295,7 @@ public void testSequenceFileInputStreamSingleAndMultiByteReads() throws Exceptio
         InputStream is2 = getInputStream(uri, conf)) {
       String multiByteReads = inputStreamToString(is1);
       String singleByteReads = inputStreamSingleByteReadsToString(is2);
-      Assertions.assertThat(multiByteReads)
+      assertThat(multiByteReads)
           .describedAs("same bytes read from multi and single byte reads")
           .isEqualTo(singleByteReads);
     }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFileSystem.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFileSystem.java
index 8267b214d53..797f8f0221b 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFileSystem.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestChRootedFileSystem.java
@@ -17,6 +17,17 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.reset;
+
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URI;
@@ -33,11 +44,10 @@
 import org.apache.hadoop.fs.FsConstants;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.permission.AclEntry;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import static org.mockito.Mockito.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 public class TestChRootedFileSystem {
   FileSystem fSys; // The ChRoootedFs
@@ -45,7 +55,7 @@ public class TestChRootedFileSystem {
   Path chrootedTo;
   FileSystemTestHelper fileSystemTestHelper;
   
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     // create the test root on local_fs
     Configuration conf = new Configuration();
@@ -62,7 +72,7 @@ public void setUp() throws Exception {
     fSys = new ChRootedFileSystem(chrootedTo.toUri(), conf);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     fSysTarget.delete(chrootedTo, true);
   }
@@ -70,17 +80,17 @@ public void tearDown() throws Exception {
   @Test
   public void testURI() {
     URI uri = fSys.getUri();
-    Assert.assertEquals(chrootedTo.toUri(), uri);
+    assertEquals(chrootedTo.toUri(), uri);
   }
   
   @Test
   public void testBasicPaths() {
     URI uri = fSys.getUri();
-    Assert.assertEquals(chrootedTo.toUri(), uri);
-    Assert.assertEquals(fSys.makeQualified(
+    assertEquals(chrootedTo.toUri(), uri);
+    assertEquals(fSys.makeQualified(
         new Path(System.getProperty("user.home"))),
         fSys.getWorkingDirectory());
-    Assert.assertEquals(fSys.makeQualified(
+    assertEquals(fSys.makeQualified(
         new Path(System.getProperty("user.home"))),
         fSys.getHomeDirectory());
     /*
@@ -90,13 +100,13 @@ public void testBasicPaths() {
      * But if we were to fix Path#makeQualified() then  the next test should
      *  have been:
 
-    Assert.assertEquals(
+    assertEquals(
         new Path(chrootedTo + "/foo/bar").makeQualified(
             FsConstants.LOCAL_FS_URI, null),
         fSys.makeQualified(new Path( "/foo/bar")));
     */
     
-    Assert.assertEquals(
+    assertEquals(
         new Path("/foo/bar").makeQualified(FsConstants.LOCAL_FS_URI, null),
         fSys.makeQualified(new Path("/foo/bar")));
   }
@@ -113,50 +123,50 @@ public void testCreateDelete() throws IOException {
 
     // Create file 
     fileSystemTestHelper.createFile(fSys, "/foo");
-    Assert.assertTrue(fSys.isFile(new Path("/foo")));
-    Assert.assertTrue(fSysTarget.isFile(new Path(chrootedTo, "foo")));
+    assertTrue(fSys.isFile(new Path("/foo")));
+    assertTrue(fSysTarget.isFile(new Path(chrootedTo, "foo")));
     
     // Create file with recursive dir
     fileSystemTestHelper.createFile(fSys, "/newDir/foo");
-    Assert.assertTrue(fSys.isFile(new Path("/newDir/foo")));
-    Assert.assertTrue(fSysTarget.isFile(new Path(chrootedTo,"newDir/foo")));
+    assertTrue(fSys.isFile(new Path("/newDir/foo")));
+    assertTrue(fSysTarget.isFile(new Path(chrootedTo, "newDir/foo")));
     
     // Delete the created file
-    Assert.assertTrue(fSys.delete(new Path("/newDir/foo"), false));
-    Assert.assertFalse(fSys.exists(new Path("/newDir/foo")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo, "newDir/foo")));
+    assertTrue(fSys.delete(new Path("/newDir/foo"), false));
+    assertFalse(fSys.exists(new Path("/newDir/foo")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "newDir/foo")));
     
     // Create file with a 2 component dirs recursively
     fileSystemTestHelper.createFile(fSys, "/newDir/newDir2/foo");
-    Assert.assertTrue(fSys.isFile(new Path("/newDir/newDir2/foo")));
-    Assert.assertTrue(fSysTarget.isFile(new Path(chrootedTo,"newDir/newDir2/foo")));
+    assertTrue(fSys.isFile(new Path("/newDir/newDir2/foo")));
+    assertTrue(fSysTarget.isFile(new Path(chrootedTo, "newDir/newDir2/foo")));
     
     // Delete the created file
-    Assert.assertTrue(fSys.delete(new Path("/newDir/newDir2/foo"), false));
-    Assert.assertFalse(fSys.exists(new Path("/newDir/newDir2/foo")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo,"newDir/newDir2/foo")));
+    assertTrue(fSys.delete(new Path("/newDir/newDir2/foo"), false));
+    assertFalse(fSys.exists(new Path("/newDir/newDir2/foo")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "newDir/newDir2/foo")));
   }
   
   
   @Test
   public void testMkdirDelete() throws IOException {
     fSys.mkdirs(fileSystemTestHelper.getTestRootPath(fSys, "/dirX"));
-    Assert.assertTrue(fSys.isDirectory(new Path("/dirX")));
-    Assert.assertTrue(fSysTarget.isDirectory(new Path(chrootedTo,"dirX")));
+    assertTrue(fSys.isDirectory(new Path("/dirX")));
+    assertTrue(fSysTarget.isDirectory(new Path(chrootedTo, "dirX")));
     
     fSys.mkdirs(fileSystemTestHelper.getTestRootPath(fSys, "/dirX/dirY"));
-    Assert.assertTrue(fSys.isDirectory(new Path("/dirX/dirY")));
-    Assert.assertTrue(fSysTarget.isDirectory(new Path(chrootedTo,"dirX/dirY")));
+    assertTrue(fSys.isDirectory(new Path("/dirX/dirY")));
+    assertTrue(fSysTarget.isDirectory(new Path(chrootedTo, "dirX/dirY")));
     
 
     // Delete the created dir
-    Assert.assertTrue(fSys.delete(new Path("/dirX/dirY"), false));
-    Assert.assertFalse(fSys.exists(new Path("/dirX/dirY")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo,"dirX/dirY")));
+    assertTrue(fSys.delete(new Path("/dirX/dirY"), false));
+    assertFalse(fSys.exists(new Path("/dirX/dirY")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "dirX/dirY")));
     
-    Assert.assertTrue(fSys.delete(new Path("/dirX"), false));
-    Assert.assertFalse(fSys.exists(new Path("/dirX")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo,"dirX")));
+    assertTrue(fSys.delete(new Path("/dirX"), false));
+    assertFalse(fSys.exists(new Path("/dirX")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "dirX")));
     
   }
   @Test
@@ -164,19 +174,19 @@ public void testRename() throws IOException {
     // Rename a file
     fileSystemTestHelper.createFile(fSys, "/newDir/foo");
     fSys.rename(new Path("/newDir/foo"), new Path("/newDir/fooBar"));
-    Assert.assertFalse(fSys.exists(new Path("/newDir/foo")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo,"newDir/foo")));
-    Assert.assertTrue(fSys.isFile(fileSystemTestHelper.getTestRootPath(fSys,"/newDir/fooBar")));
-    Assert.assertTrue(fSysTarget.isFile(new Path(chrootedTo,"newDir/fooBar")));
+    assertFalse(fSys.exists(new Path("/newDir/foo")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "newDir/foo")));
+    assertTrue(fSys.isFile(fileSystemTestHelper.getTestRootPath(fSys, "/newDir/fooBar")));
+    assertTrue(fSysTarget.isFile(new Path(chrootedTo, "newDir/fooBar")));
     
     
     // Rename a dir
     fSys.mkdirs(new Path("/newDir/dirFoo"));
     fSys.rename(new Path("/newDir/dirFoo"), new Path("/newDir/dirFooBar"));
-    Assert.assertFalse(fSys.exists(new Path("/newDir/dirFoo")));
-    Assert.assertFalse(fSysTarget.exists(new Path(chrootedTo,"newDir/dirFoo")));
-    Assert.assertTrue(fSys.isDirectory(fileSystemTestHelper.getTestRootPath(fSys,"/newDir/dirFooBar")));
-    Assert.assertTrue(fSysTarget.isDirectory(new Path(chrootedTo,"newDir/dirFooBar")));
+    assertFalse(fSys.exists(new Path("/newDir/dirFoo")));
+    assertFalse(fSysTarget.exists(new Path(chrootedTo, "newDir/dirFoo")));
+    assertTrue(fSys.isDirectory(fileSystemTestHelper.getTestRootPath(fSys, "/newDir/dirFooBar")));
+    assertTrue(fSysTarget.isDirectory(new Path(chrootedTo, "newDir/dirFooBar")));
   }
 
   @Test
@@ -184,8 +194,8 @@ public void testGetContentSummary() throws IOException {
     // GetContentSummary of a dir
     fSys.mkdirs(new Path("/newDir/dirFoo"));
     ContentSummary cs = fSys.getContentSummary(new Path("/newDir/dirFoo"));
-    Assert.assertEquals(-1L, cs.getQuota());
-    Assert.assertEquals(-1L, cs.getSpaceQuota());
+    assertEquals(-1L, cs.getQuota());
+    assertEquals(-1L, cs.getSpaceQuota());
   }
   
   /**
@@ -207,15 +217,15 @@ public void testRenameAcrossFs() throws IOException {
   public void testList() throws IOException {
     
     FileStatus fs = fSys.getFileStatus(new Path("/"));
-    Assert.assertTrue(fs.isDirectory());
+    assertTrue(fs.isDirectory());
     //  should return the full path not the chrooted path
-    Assert.assertEquals(fs.getPath(), chrootedTo);
+    assertEquals(fs.getPath(), chrootedTo);
     
     // list on Slash
     
     FileStatus[] dirPaths = fSys.listStatus(new Path("/"));
 
-    Assert.assertEquals(0, dirPaths.length);
+    assertEquals(0, dirPaths.length);
     
     
 
@@ -226,21 +236,21 @@ public void testList() throws IOException {
     fSys.mkdirs(new Path("/dirX/dirXX"));
     
     dirPaths = fSys.listStatus(new Path("/"));
-    Assert.assertEquals(4, dirPaths.length); // note 2 crc files
+    assertEquals(4, dirPaths.length); // note 2 crc files
     
     // Note the the file status paths are the full paths on target
     fs = FileSystemTestHelper.containsPath(new Path(chrootedTo, "foo"), dirPaths);
-      Assert.assertNotNull(fs);
-      Assert.assertTrue(fs.isFile());
+    assertNotNull(fs);
+    assertTrue(fs.isFile());
     fs = FileSystemTestHelper.containsPath(new Path(chrootedTo, "bar"), dirPaths);
-      Assert.assertNotNull(fs);
-      Assert.assertTrue(fs.isFile());
+    assertNotNull(fs);
+    assertTrue(fs.isFile());
     fs = FileSystemTestHelper.containsPath(new Path(chrootedTo, "dirX"), dirPaths);
-      Assert.assertNotNull(fs);
-      Assert.assertTrue(fs.isDirectory());
+    assertNotNull(fs);
+    assertTrue(fs.isDirectory());
     fs = FileSystemTestHelper.containsPath(new Path(chrootedTo, "dirY"), dirPaths);
-      Assert.assertNotNull(fs);
-      Assert.assertTrue(fs.isDirectory());
+    assertNotNull(fs);
+    assertTrue(fs.isDirectory());
   }
   
   @Test
@@ -250,31 +260,31 @@ public void testWorkingDirectory() throws Exception {
     fSys.mkdirs(new Path("/testWd"));
     Path workDir = new Path("/testWd");
     fSys.setWorkingDirectory(workDir);
-    Assert.assertEquals(workDir, fSys.getWorkingDirectory());
+    assertEquals(workDir, fSys.getWorkingDirectory());
 
     fSys.setWorkingDirectory(new Path("."));
-    Assert.assertEquals(workDir, fSys.getWorkingDirectory());
+    assertEquals(workDir, fSys.getWorkingDirectory());
 
     fSys.setWorkingDirectory(new Path(".."));
-    Assert.assertEquals(workDir.getParent(), fSys.getWorkingDirectory());
+    assertEquals(workDir.getParent(), fSys.getWorkingDirectory());
     
     // cd using a relative path
 
     // Go back to our test root
     workDir = new Path("/testWd");
     fSys.setWorkingDirectory(workDir);
-    Assert.assertEquals(workDir, fSys.getWorkingDirectory());
+    assertEquals(workDir, fSys.getWorkingDirectory());
     
     Path relativeDir = new Path("existingDir1");
     Path absoluteDir = new Path(workDir,"existingDir1");
     fSys.mkdirs(absoluteDir);
     fSys.setWorkingDirectory(relativeDir);
-    Assert.assertEquals(absoluteDir, fSys.getWorkingDirectory());
+    assertEquals(absoluteDir, fSys.getWorkingDirectory());
     // cd using a absolute path
     absoluteDir = new Path("/test/existingDir2");
     fSys.mkdirs(absoluteDir);
     fSys.setWorkingDirectory(absoluteDir);
-    Assert.assertEquals(absoluteDir, fSys.getWorkingDirectory());
+    assertEquals(absoluteDir, fSys.getWorkingDirectory());
     
     // Now open a file relative to the wd we just set above.
     Path absoluteFooPath = new Path(absoluteDir, "foo");
@@ -283,14 +293,14 @@ public void testWorkingDirectory() throws Exception {
     
     // Now mkdir relative to the dir we cd'ed to
     fSys.mkdirs(new Path("newDir"));
-    Assert.assertTrue(fSys.isDirectory(new Path(absoluteDir, "newDir")));
+    assertTrue(fSys.isDirectory(new Path(absoluteDir, "newDir")));
 
     /* Filesystem impls (RawLocal and DistributedFileSystem do not check
      * for existing of working dir
     absoluteDir = getTestRootPath(fSys, "nonexistingPath");
     try {
       fSys.setWorkingDirectory(absoluteDir);
-      Assert.fail("cd to non existing dir should have failed");
+      fail("cd to non existing dir should have failed");
     } catch (Exception e) {
       // Exception as expected
     }
@@ -301,7 +311,7 @@ public void testWorkingDirectory() throws Exception {
     absoluteDir = new Path(LOCAL_FS_ROOT_URI + "/existingDir");
     fSys.mkdirs(absoluteDir);
     fSys.setWorkingDirectory(absoluteDir);
-    Assert.assertEquals(absoluteDir, fSys.getWorkingDirectory());
+    assertEquals(absoluteDir, fSys.getWorkingDirectory());
 
   }
   
@@ -311,15 +321,17 @@ public void testWorkingDirectory() throws Exception {
   
   @Test
   public void testResolvePath() throws IOException {
-    Assert.assertEquals(chrootedTo, fSys.resolvePath(new Path("/"))); 
+    assertEquals(chrootedTo, fSys.resolvePath(new Path("/")));
     fileSystemTestHelper.createFile(fSys, "/foo");
-    Assert.assertEquals(new Path(chrootedTo, "foo"),
+    assertEquals(new Path(chrootedTo, "foo"),
         fSys.resolvePath(new Path("/foo"))); 
   }
 
-  @Test(expected=FileNotFoundException.class) 
+  @Test
   public void testResolvePathNonExisting() throws IOException {
+    assertThrows(FileNotFoundException.class, () -> {
       fSys.resolvePath(new Path("/nonExisting"));
+    });
   }
   
   @Test
@@ -435,7 +447,8 @@ public void initialize(URI name, Configuration conf) throws IOException {
     }
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testCreateSnapshot() throws Exception {
     Path snapRootPath = new Path("/snapPath");
     Path chRootedSnapRootPath = new Path("/a/b/snapPath");
@@ -452,7 +465,8 @@ public void testCreateSnapshot() throws Exception {
     verify(mockFs).createSnapshot(chRootedSnapRootPath, "snap1");
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testDeleteSnapshot() throws Exception {
     Path snapRootPath = new Path("/snapPath");
     Path chRootedSnapRootPath = new Path("/a/b/snapPath");
@@ -469,7 +483,8 @@ public void testDeleteSnapshot() throws Exception {
     verify(mockFs).deleteSnapshot(chRootedSnapRootPath, "snap1");
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testRenameSnapshot() throws Exception {
     Path snapRootPath = new Path("/snapPath");
     Path chRootedSnapRootPath = new Path("/a/b/snapPath");
@@ -487,7 +502,8 @@ public void testRenameSnapshot() throws Exception {
         "snapNewName");
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSetStoragePolicy() throws Exception {
     Path storagePolicyPath = new Path("/storagePolicy");
     Path chRootedStoragePolicyPath = new Path("/a/b/storagePolicy");
@@ -504,7 +520,8 @@ public void testSetStoragePolicy() throws Exception {
     verify(mockFs).setStoragePolicy(chRootedStoragePolicyPath, "HOT");
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUnsetStoragePolicy() throws Exception {
     Path storagePolicyPath = new Path("/storagePolicy");
     Path chRootedStoragePolicyPath = new Path("/a/b/storagePolicy");
@@ -521,7 +538,8 @@ public void testUnsetStoragePolicy() throws Exception {
     verify(mockFs).unsetStoragePolicy(chRootedStoragePolicyPath);
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetStoragePolicy() throws Exception {
     Path storagePolicyPath = new Path("/storagePolicy");
     Path chRootedStoragePolicyPath = new Path("/a/b/storagePolicy");
@@ -538,7 +556,8 @@ public void testGetStoragePolicy() throws Exception {
     verify(mockFs).getStoragePolicy(chRootedStoragePolicyPath);
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetAllStoragePolicy() throws Exception {
     Configuration conf = new Configuration();
     conf.setClass("fs.mockfs.impl", MockFileSystem.class, FileSystem.class);
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestHCFSMountTableConfigLoader.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestHCFSMountTableConfigLoader.java
index bf7a6e32c8e..cba797f556b 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestHCFSMountTableConfigLoader.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestHCFSMountTableConfigLoader.java
@@ -17,6 +17,9 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
@@ -28,11 +31,10 @@
 import org.apache.hadoop.fs.FsConstants;
 import org.apache.hadoop.fs.LocalFileSystem;
 import org.apache.hadoop.fs.Path;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 /**
  * Tests the mount table loading.
@@ -69,7 +71,7 @@ public class TestHCFSMountTableConfigLoader {
           .append(TABLE_NAME).append(DOT).append(Constants.CONFIG_VIEWFS_LINK)
           .append(DOT).append(SRC_TWO).toString();
 
-  @BeforeClass
+  @BeforeAll
   public static void init() throws Exception {
     fsTarget = new LocalFileSystem();
     fsTarget.initialize(new URI("file:///"), new Configuration());
@@ -78,7 +80,7 @@ public static void init() throws Exception {
     fsTarget.mkdirs(targetTestRoot);
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     conf = new Configuration();
     conf.set(String.format(
@@ -100,8 +102,8 @@ public void testMountTableFileLoadingWhenMultipleFilesExist()
             TARGET_TWO },
         new Path(newVersionMountTableFile.toURI()), conf);
     loader.load(targetTestRoot.toString(), conf);
-    Assert.assertEquals(conf.get(MOUNT_LINK_KEY_SRC_TWO), TARGET_TWO);
-    Assert.assertEquals(conf.get(MOUNT_LINK_KEY_SRC_ONE), TARGET_ONE);
+    assertEquals(conf.get(MOUNT_LINK_KEY_SRC_TWO), TARGET_TWO);
+    assertEquals(conf.get(MOUNT_LINK_KEY_SRC_ONE), TARGET_ONE);
   }
 
   @Test
@@ -119,8 +121,8 @@ public void testMountTableFileWithInvalidFormat() throws Exception {
         new Path(invalidMountFileName.toURI()), conf);
     // Pass mount table directory
     loader.load(path.toString(), conf);
-    Assert.assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_TWO));
-    Assert.assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_ONE));
+    assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_TWO));
+    assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_ONE));
     invalidMountFileName.delete();
   }
 
@@ -135,15 +137,16 @@ public void testMountTableFileWithInvalidFormatWithNoDotsInName()
     invalidMountFileName.createNewFile();
     // Pass mount table directory
     loader.load(path.toString(), conf);
-    Assert.assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_TWO));
-    Assert.assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_ONE));
+    assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_TWO));
+    assertEquals(null, conf.get(MOUNT_LINK_KEY_SRC_ONE));
     invalidMountFileName.delete();
   }
 
-  @Test(expected = FileNotFoundException.class)
+  @Test
   public void testLoadWithMountFile() throws Exception {
-    loader.load(new URI(targetTestRoot.toString() + "/Non-Existent-File.xml")
-        .toString(), conf);
+    assertThrows(FileNotFoundException.class, () -> {
+      loader.load(new URI(targetTestRoot.toString() + "/Non-Existent-File.xml").toString(), conf);
+    });
   }
 
   @Test
@@ -153,11 +156,11 @@ public void testLoadWithNonExistentMountFile() throws Exception {
         new String[] {TARGET_ONE, TARGET_TWO },
         new Path(oldVersionMountTableFile.toURI()), conf);
     loader.load(oldVersionMountTableFile.toURI().toString(), conf);
-    Assert.assertEquals(conf.get(MOUNT_LINK_KEY_SRC_TWO), TARGET_TWO);
-    Assert.assertEquals(conf.get(MOUNT_LINK_KEY_SRC_ONE), TARGET_ONE);
+    assertEquals(conf.get(MOUNT_LINK_KEY_SRC_TWO), TARGET_TWO);
+    assertEquals(conf.get(MOUNT_LINK_KEY_SRC_ONE), TARGET_ONE);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDown() throws IOException {
     fsTarget.delete(targetTestRoot, true);
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestNestedMountPoint.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestNestedMountPoint.java
index 4a7aafd0a2b..eaf8711fd7d 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestNestedMountPoint.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestNestedMountPoint.java
@@ -17,6 +17,10 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.net.URI;
 import java.util.List;
 import java.util.function.Function;
@@ -24,10 +28,9 @@
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.FsConstants;
 import org.apache.hadoop.fs.Path;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 /**
@@ -65,7 +68,7 @@ static class TestNestMountPointInternalFileSystem extends TestNestMountPointFile
   private static final URI NN5_TARGET = URI.create("hdfs://nn05/b/c/d/e");
   private static final URI NN6_TARGET = URI.create("hdfs://nn06/b/c/d/e/f");
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     conf = new Configuration();
     mtName = TestNestedMountPoint.class.getName();
@@ -107,7 +110,7 @@ protected TestNestedMountPoint.TestNestMountPointInternalFileSystem getTargetFil
     };
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     inodeTree = null;
   }
@@ -116,250 +119,272 @@ public void tearDown() throws Exception {
   public void testPathResolveToLink() throws Exception {
     // /a/b/c/d/e/f resolves to /a/b/c/d/e and /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c/d/e/f", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b/c/d/e", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN4_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b/c/d/e", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN4_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b/c/d/e resolves to /a/b/c/d/e and /
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b/c/d/e", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a/b/c/d/e", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN4_TARGET, ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a/b/c/d/e", resolveResult2.resolvedPath);
+    assertEquals(new Path("/"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN4_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertTrue(resolveResult2.isLastInternalDirLink());
 
     // /a/b/c/d/e/f/g/h/i resolves to /a/b/c/d/e and /f/g/h/i
     InodeTree.ResolveResult resolveResult3 = inodeTree.resolve("/a/b/c/d/e/f/g/h/i", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
-    Assert.assertEquals("/a/b/c/d/e", resolveResult3.resolvedPath);
-    Assert.assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
-    Assert.assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN4_TARGET, ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult3.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
+    assertEquals("/a/b/c/d/e", resolveResult3.resolvedPath);
+    assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
+    assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN4_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
+    assertTrue(resolveResult3.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToLinkNotResolveLastComponent() throws Exception {
     // /a/b/c/d/e/f resolves to /a/b/c/d/e and /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c/d/e/f", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b/c/d/e", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN4_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b/c/d/e", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN4_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b/c/d/e resolves to /a/b/c/d and /e
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b/c/d/e", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/e"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a/b/c/d", resolveResult2.resolvedPath);
+    assertEquals(new Path("/e"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertTrue(resolveResult2.isLastInternalDirLink());
 
     // /a/b/c/d/e/f/g/h/i resolves to /a/b/c/d/e and /f/g/h/i
     InodeTree.ResolveResult resolveResult3 = inodeTree.resolve("/a/b/c/d/e/f/g/h/i", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
-    Assert.assertEquals("/a/b/c/d/e", resolveResult3.resolvedPath);
-    Assert.assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
-    Assert.assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN4_TARGET, ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult3.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
+    assertEquals("/a/b/c/d/e", resolveResult3.resolvedPath);
+    assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
+    assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN4_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
+    assertTrue(resolveResult3.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToDirLink() throws Exception {
     // /a/b/c/d/f resolves to /a/b/c/d, /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c/d/f", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b/c/d", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b/c/d resolves to /a/b/c/d and /
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b/c/d", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a/b/c/d", resolveResult2.resolvedPath);
+    assertEquals(new Path("/"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertTrue(resolveResult2.isLastInternalDirLink());
 
     // /a/b/c/d/f/g/h/i resolves to /a/b/c/d and /f/g/h/i
     InodeTree.ResolveResult resolveResult3 = inodeTree.resolve("/a/b/c/d/f/g/h/i", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult3.resolvedPath);
-    Assert.assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
-    Assert.assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult3.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
+    assertEquals("/a/b/c/d", resolveResult3.resolvedPath);
+    assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
+    assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
+    assertTrue(resolveResult3.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToDirLinkNotResolveLastComponent() throws Exception {
     // /a/b/c/d/f resolves to /a/b/c/d, /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c/d/f", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b/c/d", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b/c/d resolves to /a/b and /c/d
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b/c/d", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a/b", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/c/d"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a/b", resolveResult2.resolvedPath);
+    assertEquals(new Path("/c/d"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertTrue(resolveResult2.isLastInternalDirLink());
 
     // /a/b/c/d/f/g/h/i resolves to /a/b/c/d and /f/g/h/i
     InodeTree.ResolveResult resolveResult3 = inodeTree.resolve("/a/b/c/d/f/g/h/i", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
-    Assert.assertEquals("/a/b/c/d", resolveResult3.resolvedPath);
-    Assert.assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
-    Assert.assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN3_TARGET, ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult3.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult3.kind);
+    assertEquals("/a/b/c/d", resolveResult3.resolvedPath);
+    assertEquals(new Path("/f/g/h/i"), resolveResult3.remainingPath);
+    assertTrue(resolveResult3.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN3_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult3.targetFileSystem).getUri());
+    assertTrue(resolveResult3.isLastInternalDirLink());
   }
 
   @Test
   public void testMultiNestedMountPointsPathResolveToDirLink() throws Exception {
     // /a/b/f resolves to /a/b and /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/f", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b resolves to /a/b and /
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a/b", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a/b", resolveResult2.resolvedPath);
+    assertEquals(new Path("/"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertTrue(resolveResult2.isLastInternalDirLink());
   }
 
   @Test
   public void testMultiNestedMountPointsPathResolveToDirLinkNotResolveLastComponent() throws Exception {
     // /a/b/f resolves to /a/b and /f
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/f", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/f"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b", resolveResult.resolvedPath);
+    assertEquals(new Path("/f"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
 
     // /a/b resolves to /a and /b
     InodeTree.ResolveResult resolveResult2 = inodeTree.resolve("/a/b", false);
-    Assert.assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult2.kind);
-    Assert.assertEquals("/a", resolveResult2.resolvedPath);
-    Assert.assertEquals(new Path("/b"), resolveResult2.remainingPath);
-    Assert.assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
-    Assert.assertEquals(fsUri, ((TestNestMountPointInternalFileSystem) resolveResult2.targetFileSystem).getUri());
-    Assert.assertFalse(resolveResult2.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult2.kind);
+    assertEquals("/a", resolveResult2.resolvedPath);
+    assertEquals(new Path("/b"), resolveResult2.remainingPath);
+    assertTrue(resolveResult2.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
+    assertEquals(fsUri,
+        ((TestNestMountPointInternalFileSystem) resolveResult2.targetFileSystem).getUri());
+    assertFalse(resolveResult2.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToDirLinkLastComponentInternalDir() throws Exception {
     // /a/b/c resolves to /a/b and /c
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/c"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b", resolveResult.resolvedPath);
+    assertEquals(new Path("/c"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToDirLinkLastComponentInternalDirNotResolveLastComponent() throws Exception {
     // /a/b/c resolves to /a/b and /c
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/b/c", false);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a/b", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/c"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(NN1_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertTrue(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a/b", resolveResult.resolvedPath);
+    assertEquals(new Path("/c"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(NN1_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertTrue(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToLinkFallBack() throws Exception {
     // /a/e resolves to linkfallback
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/e", true);
-    Assert.assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/a/e"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
-    Assert.assertEquals(LINKFALLBACK_TARGET, ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertFalse(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.EXTERNAL_DIR, resolveResult.kind);
+    assertEquals("/", resolveResult.resolvedPath);
+    assertEquals(new Path("/a/e"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointFileSystem);
+    assertEquals(LINKFALLBACK_TARGET,
+        ((TestNestMountPointFileSystem) resolveResult.targetFileSystem).getUri());
+    assertFalse(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testPathNotResolveToLinkFallBackNotResolveLastComponent() throws Exception {
     // /a/e resolves to internalDir instead of linkfallback
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/a/e", false);
-    Assert.assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/a", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/e"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
-    Assert.assertEquals(fsUri, ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertFalse(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
+    assertEquals("/a", resolveResult.resolvedPath);
+    assertEquals(new Path("/e"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
+    assertEquals(fsUri,
+        ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
+    assertFalse(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToInternalDir() throws Exception {
     // /b/c resolves to internal dir
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/b/c", true);
-    Assert.assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/b/c", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
-    Assert.assertEquals(fsUri, ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertFalse(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
+    assertEquals("/b/c", resolveResult.resolvedPath);
+    assertEquals(new Path("/"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
+    assertEquals(fsUri,
+        ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
+    assertFalse(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testPathResolveToInternalDirNotResolveLastComponent() throws Exception {
     // /b/c resolves to internal dir
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/b/c", false);
-    Assert.assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/b", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/c"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
-    Assert.assertEquals(fsUri, ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
-    Assert.assertFalse(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
+    assertEquals("/b", resolveResult.resolvedPath);
+    assertEquals(new Path("/c"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
+    assertEquals(fsUri,
+        ((TestNestMountPointInternalFileSystem) resolveResult.targetFileSystem).getUri());
+    assertFalse(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testSlashResolveToInternalDir() throws Exception {
     // / resolves to internal dir
     InodeTree.ResolveResult resolveResult = inodeTree.resolve("/", true);
-    Assert.assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
-    Assert.assertEquals("/", resolveResult.resolvedPath);
-    Assert.assertEquals(new Path("/"), resolveResult.remainingPath);
-    Assert.assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
-    Assert.assertFalse(resolveResult.isLastInternalDirLink());
+    assertEquals(InodeTree.ResultKind.INTERNAL_DIR, resolveResult.kind);
+    assertEquals("/", resolveResult.resolvedPath);
+    assertEquals(new Path("/"), resolveResult.remainingPath);
+    assertTrue(resolveResult.targetFileSystem instanceof TestNestMountPointInternalFileSystem);
+    assertFalse(resolveResult.isLastInternalDirLink());
   }
 
   @Test
   public void testInodeTreeMountPoints() throws Exception {
     List<InodeTree.MountPoint<FileSystem>> mountPoints = inodeTree.getMountPoints();
-    Assert.assertEquals(6, mountPoints.size());
+    assertEquals(6, mountPoints.size());
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestRegexMountPoint.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestRegexMountPoint.java
index a5df2bab413..4267955aa26 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestRegexMountPoint.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestRegexMountPoint.java
@@ -17,6 +17,9 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.util.function.Function;
 import java.io.IOException;
 import java.net.URI;
@@ -24,10 +27,9 @@
 import java.util.Set;
 
 import org.apache.hadoop.conf.Configuration;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -55,7 +57,7 @@ public URI getUri() {
     }
   }
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     conf = new Configuration();
     ConfigUtil.addLink(conf, TestRegexMountPoint.class.getName(), "/mnt",
@@ -88,7 +90,7 @@ protected TestRegexMountPointFileSystem getTargetFileSystem(
     };
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     inodeTree = null;
   }
@@ -101,14 +103,14 @@ public void testGetVarListInString() throws IOException {
         new RegexMountPoint(inodeTree, srcRegex, target, null);
     regexMountPoint.initialize();
     Map<String, Set<String>> varMap = regexMountPoint.getVarInDestPathMap();
-    Assert.assertEquals(varMap.size(), 3);
-    Assert.assertEquals(varMap.get("0").size(), 1);
-    Assert.assertTrue(varMap.get("0").contains("$0"));
-    Assert.assertEquals(varMap.get("1").size(), 2);
-    Assert.assertTrue(varMap.get("1").contains("${1}"));
-    Assert.assertTrue(varMap.get("1").contains("$1"));
-    Assert.assertEquals(varMap.get("2").size(), 1);
-    Assert.assertTrue(varMap.get("2").contains("${2}"));
+    assertEquals(varMap.size(), 3);
+    assertEquals(varMap.get("0").size(), 1);
+    assertTrue(varMap.get("0").contains("$0"));
+    assertEquals(varMap.get("1").size(), 2);
+    assertTrue(varMap.get("1").contains("${1}"));
+    assertTrue(varMap.get("1").contains("$1"));
+    assertEquals(varMap.get("2").size(), 1);
+    assertTrue(varMap.get("2").contains("${2}"));
   }
 
   @Test
@@ -121,18 +123,18 @@ public void testResolve() throws IOException {
     regexMountPoint.initialize();
     InodeTree.ResolveResult resolveResult =
         regexMountPoint.resolve("/user/hadoop/file1", true);
-    Assert.assertEquals(resolveResult.kind, InodeTree.ResultKind.EXTERNAL_DIR);
-    Assert.assertTrue(
+    assertEquals(resolveResult.kind, InodeTree.ResultKind.EXTERNAL_DIR);
+    assertTrue(
         resolveResult.targetFileSystem
             instanceof TestRegexMountPointFileSystem);
-    Assert.assertEquals("/user/hadoop", resolveResult.resolvedPath);
-    Assert.assertTrue(
+    assertEquals("/user/hadoop", resolveResult.resolvedPath);
+    assertTrue(
         resolveResult.targetFileSystem
             instanceof TestRegexMountPointFileSystem);
-    Assert.assertEquals("/namenode1/testResolve/hadoop",
+    assertEquals("/namenode1/testResolve/hadoop",
         ((TestRegexMountPointFileSystem) resolveResult.targetFileSystem)
             .getUri().toString());
-    Assert.assertEquals("/file1", resolveResult.remainingPath.toString());
+    assertEquals("/file1", resolveResult.remainingPath.toString());
   }
 
   @Test
@@ -149,18 +151,18 @@ public void testResolveWithInterceptor() throws IOException {
     regexMountPoint.initialize();
     InodeTree.ResolveResult resolveResult =
         regexMountPoint.resolve("/user/hadoop_user1/file_index", true);
-    Assert.assertEquals(resolveResult.kind, InodeTree.ResultKind.EXTERNAL_DIR);
-    Assert.assertTrue(
+    assertEquals(resolveResult.kind, InodeTree.ResultKind.EXTERNAL_DIR);
+    assertTrue(
         resolveResult.targetFileSystem
             instanceof TestRegexMountPointFileSystem);
-    Assert.assertEquals("/user/hadoop_user1", resolveResult.resolvedPath);
-    Assert.assertTrue(
+    assertEquals("/user/hadoop_user1", resolveResult.resolvedPath);
+    assertTrue(
         resolveResult.targetFileSystem
             instanceof TestRegexMountPointFileSystem);
-    Assert.assertEquals("/namenode1/testResolve/hadoop-user1",
+    assertEquals("/namenode1/testResolve/hadoop-user1",
         ((TestRegexMountPointFileSystem) resolveResult.targetFileSystem)
             .getUri().toString());
-    Assert.assertEquals("/file_index",
+    assertEquals("/file_index",
         resolveResult.remainingPath.toString());
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemLocalFileSystem.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemLocalFileSystem.java
index 9ba4d4b3dae..6dc7c361108 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemLocalFileSystem.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemLocalFileSystem.java
@@ -17,7 +17,6 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
-
 import java.io.IOException;
 import java.net.URI;
 
@@ -38,7 +37,6 @@
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemWithAuthorityLocalFileSystem.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemWithAuthorityLocalFileSystem.java
index 3049bac0a80..a475bfb2cad 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemWithAuthorityLocalFileSystem.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFileSystemWithAuthorityLocalFileSystem.java
@@ -17,6 +17,7 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.net.URI;
 
@@ -30,7 +31,6 @@
 import java.io.IOException;
 
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -76,15 +76,16 @@ Path getTrashRootInFallBackFS() throws IOException {
   @Override
   @Test
   public void testBasicPaths() {
-    Assertions.assertEquals(fsView.getUri(), schemeWithAuthority);
-    Assertions.assertEquals(fsView.getWorkingDirectory(),
-        fsView.makeQualified(
-        new Path("/user/" + System.getProperty("user.name"))));
-    Assertions.assertEquals(fsView.getHomeDirectory(),
-        fsView.makeQualified(
-        new Path("/user/" + System.getProperty("user.name"))));
-    Assertions.assertEquals(
-        fsView.makeQualified(new Path("/foo/bar")),
-        new Path("/foo/bar").makeQualified(schemeWithAuthority, null));
+    assertEquals(schemeWithAuthority,
+        fsView.getUri());
+    assertEquals(fsView.makeQualified(
+        new Path("/user/" + System.getProperty("user.name"))),
+        fsView.getWorkingDirectory());
+    assertEquals(fsView.makeQualified(
+        new Path("/user/" + System.getProperty("user.name"))),
+        fsView.getHomeDirectory());
+    assertEquals(
+        new Path("/foo/bar").makeQualified(schemeWithAuthority, null),
+        fsView.makeQualified(new Path("/foo/bar")));
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsOverloadSchemeListStatus.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsOverloadSchemeListStatus.java
index 7afc78981f6..d1c6c18f502 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsOverloadSchemeListStatus.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/TestViewFsOverloadSchemeListStatus.java
@@ -32,12 +32,15 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.hadoop.test.GenericTestUtils;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * ViewFsOverloadScheme ListStatus.
@@ -49,7 +52,7 @@ public class TestViewFsOverloadSchemeListStatus {
   private Configuration conf;
   private static final String FILE_NAME = "file";
 
-  @Before
+  @BeforeEach
   public void setUp() {
     conf = new Configuration();
     conf.set(String.format("fs.%s.impl", FILE_NAME),
@@ -61,7 +64,7 @@ public void setUp() {
     assertTrue(TEST_DIR.mkdirs());
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws IOException {
     FileUtil.fullyDelete(TEST_DIR);
   }
@@ -130,7 +133,8 @@ public void testListStatusACL() throws IOException, URISyntaxException {
    * if there are no mount links configured. It should add fallback with the
    * chrootedFS at it's uri's root.
    */
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testViewFSOverloadSchemeWithoutAnyMountLinks() throws Exception {
     Path initUri = new Path(TEST_DIR.toURI().toString(), "init");
     try (FileSystem fs = FileSystem.get(initUri.toUri(), conf)) {
@@ -154,7 +158,7 @@ public void testViewFSOverloadSchemeWithoutAnyMountLinks() throws Exception {
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void cleanup() throws IOException {
     FileUtil.fullyDelete(TEST_DIR);
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
index 4b3f4966096..7d37bddf2a0 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFileSystemBaseTest.java
@@ -61,8 +61,6 @@
 import org.apache.hadoop.security.token.Token;
 import org.apache.hadoop.test.GenericTestUtils;
 import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Assumptions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.io.TempDir;
@@ -75,7 +73,15 @@
 import static org.apache.hadoop.fs.FileSystem.TRASH_PREFIX;
 
 import static org.apache.hadoop.test.GenericTestUtils.assertExceptionContains;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 /**
  * <p>
@@ -174,7 +180,7 @@ public void testGetMountPoints() {
       LOG.info("MountPoint: " + mountPoint.getMountedOnPath() + " => "
           + mountPoint.getTargetFileSystemURIs()[0]);
     }
-    Assertions.assertEquals(mountPoints.length, getExpectedMountPoints());
+    assertEquals(mountPoints.length, getExpectedMountPoints());
   }
   
   int getExpectedMountPoints() {
@@ -190,7 +196,7 @@ int getExpectedMountPoints() {
   public void testGetDelegationTokens() throws IOException {
     Token<?>[] delTokens = 
         fsView.addDelegationTokens("sanjay", new Credentials());
-    Assertions.assertEquals(delTokens.length, getExpectedDelegationTokenCount());
+    assertEquals(delTokens.length, getExpectedDelegationTokenCount());
   }
   
   int getExpectedDelegationTokenCount() {
@@ -205,7 +211,7 @@ public void testGetDelegationTokensWithCredentials() throws IOException {
 
     int expectedTokenCount = getExpectedDelegationTokenCountWithCredentials();
 
-    Assertions.assertEquals(delTokens.size(), expectedTokenCount);
+    assertEquals(delTokens.size(), expectedTokenCount);
     Credentials newCredentials = new Credentials();
     for (int i = 0; i < expectedTokenCount / 2; i++) {
       Token<?> token = delTokens.get(i);
@@ -214,7 +220,7 @@ public void testGetDelegationTokensWithCredentials() throws IOException {
 
     List<Token<?>> delTokens2 =
         Arrays.asList(fsView.addDelegationTokens("sanjay", newCredentials));
-    Assertions.assertEquals(delTokens2.size(), (expectedTokenCount + 1) / 2);
+    assertEquals(delTokens2.size(), (expectedTokenCount + 1) / 2);
   }
 
   int getExpectedDelegationTokenCountWithCredentials() {
@@ -223,15 +229,15 @@ int getExpectedDelegationTokenCountWithCredentials() {
 
   @Test
   public void testBasicPaths() {
-    Assertions.assertEquals(fsView.getUri(), FsConstants.VIEWFS_URI);
-    Assertions.assertEquals(fsView.getWorkingDirectory(),
+    assertEquals(fsView.getUri(), FsConstants.VIEWFS_URI);
+    assertEquals(fsView.getWorkingDirectory(),
         fsView.makeQualified(
             new Path("/user/" + System.getProperty("user.name"))));
-    Assertions.assertEquals(
+    assertEquals(
         fsView.getHomeDirectory(),
         fsView.makeQualified(
         new Path("/user/" + System.getProperty("user.name"))));
-    Assertions.assertEquals(
+    assertEquals(
         fsView.makeQualified(new Path("/foo/bar")),
         new Path("/foo/bar").makeQualified(FsConstants.VIEWFS_URI, null));
   }
@@ -259,116 +265,116 @@ private void testOperationsThroughMountLinksInternal(boolean located)
       throws IOException {
     // Create file
     fileSystemTestHelper.createFile(fsView, "/user/foo");
-    Assertions.assertTrue(fsView.isFile(new Path("/user/foo")),
+    assertTrue(fsView.isFile(new Path("/user/foo")),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot,"user/foo")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "user/foo")),
         "Target of created file should be type file");
     
     // Delete the created file
-    Assertions.assertTrue(fsView.delete(new Path("/user/foo"), false),
+    assertTrue(fsView.delete(new Path("/user/foo"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/user/foo")),
+    assertFalse(fsView.exists(new Path("/user/foo")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"user/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "user/foo")),
         "Target File should not exist after delete");
     
     // Create file with a 2 component dirs
     fileSystemTestHelper.createFile(fsView, "/internalDir/linkToDir2/foo");
-    Assertions.assertTrue(fsView.isFile(new Path("/internalDir/linkToDir2/foo")),
+    assertTrue(fsView.isFile(new Path("/internalDir/linkToDir2/foo")),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot,"dir2/foo")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "dir2/foo")),
         "Target of created file should be type file");
     
     // Delete the created file
-    Assertions.assertTrue(fsView.delete(new Path("/internalDir/linkToDir2/foo"), false),
+    assertTrue(fsView.delete(new Path("/internalDir/linkToDir2/foo"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/internalDir/linkToDir2/foo")),
+    assertFalse(fsView.exists(new Path("/internalDir/linkToDir2/foo")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"dir2/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "dir2/foo")),
         "Target File should not exist after delete");
     
     
     // Create file with a 3 component dirs
     fileSystemTestHelper.createFile(fsView, "/internalDir/internalDir2/linkToDir3/foo");
-    Assertions.assertTrue(fsView.isFile(new Path("/internalDir/internalDir2/linkToDir3/foo")),
+    assertTrue(fsView.isFile(new Path("/internalDir/internalDir2/linkToDir3/foo")),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot,"dir3/foo")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "dir3/foo")),
         "Target of created file should be type file");
     
     // Recursive Create file with missing dirs
     fileSystemTestHelper.createFile(fsView,
         "/internalDir/linkToDir2/missingDir/miss2/foo");
-    Assertions.assertTrue(fsView.isFile(new Path("/internalDir/linkToDir2/missingDir/miss2/foo")),
+    assertTrue(fsView.isFile(new Path("/internalDir/linkToDir2/missingDir/miss2/foo")),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot,"dir2/missingDir/miss2/foo")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "dir2/missingDir/miss2/foo")),
         "Target of created file should be type file");
 
     
     // Delete the created file
-    Assertions.assertTrue(fsView.delete(
+    assertTrue(fsView.delete(
             new Path("/internalDir/internalDir2/linkToDir3/foo"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/internalDir/internalDir2/linkToDir3/foo")),
+    assertFalse(fsView.exists(new Path("/internalDir/internalDir2/linkToDir3/foo")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"dir3/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "dir3/foo")),
         "Target File should not exist after delete");
     
       
     // mkdir
     fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView, "/user/dirX"));
-    Assertions.assertTrue(fsView.isDirectory(new Path("/user/dirX")),
+    assertTrue(fsView.isDirectory(new Path("/user/dirX")),
         "New dir should be type dir");
-    Assertions.assertTrue(fsTarget.isDirectory(new Path(targetTestRoot,"user/dirX")),
+    assertTrue(fsTarget.isDirectory(new Path(targetTestRoot, "user/dirX")),
         "Target of new dir should be of type dir");
     
     fsView.mkdirs(
         fileSystemTestHelper.getTestRootPath(fsView, "/user/dirX/dirY"));
-    Assertions.assertTrue(fsView.isDirectory(new Path("/user/dirX/dirY")),
+    assertTrue(fsView.isDirectory(new Path("/user/dirX/dirY")),
         "New dir should be type dir");
-    Assertions.assertTrue(fsTarget.isDirectory(new Path(targetTestRoot,"user/dirX/dirY")),
+    assertTrue(fsTarget.isDirectory(new Path(targetTestRoot, "user/dirX/dirY")),
         "Target of new dir should be of type dir");
     
 
     // Delete the created dir
-    Assertions.assertTrue(fsView.delete(new Path("/user/dirX/dirY"), false),
+    assertTrue(fsView.delete(new Path("/user/dirX/dirY"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/user/dirX/dirY")),
+    assertFalse(fsView.exists(new Path("/user/dirX/dirY")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"user/dirX/dirY")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "user/dirX/dirY")),
         "Target File should not exist after delete");
     
-    Assertions.assertTrue(fsView.delete(new Path("/user/dirX"), false),
+    assertTrue(fsView.delete(new Path("/user/dirX"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/user/dirX")),
+    assertFalse(fsView.exists(new Path("/user/dirX")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"user/dirX")));
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "user/dirX")));
     
     // Rename a file 
     fileSystemTestHelper.createFile(fsView, "/user/foo");
     fsView.rename(new Path("/user/foo"), new Path("/user/fooBar"));
-    Assertions.assertFalse(fsView.exists(new Path("/user/foo")),
+    assertFalse(fsView.exists(new Path("/user/foo")),
         "Renamed src should not exist");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"user/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "user/foo")),
         "Renamed src should not exist in target");
-    Assertions.assertTrue(fsView.isFile(fileSystemTestHelper.getTestRootPath(fsView,"/user/fooBar")),
+    assertTrue(fsView.isFile(fileSystemTestHelper.getTestRootPath(fsView, "/user/fooBar")),
         "Renamed dest should  exist as file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot,"user/fooBar")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "user/fooBar")),
         "Renamed dest should  exist as file in target");
     
     fsView.mkdirs(new Path("/user/dirFoo"));
     fsView.rename(new Path("/user/dirFoo"), new Path("/user/dirFooBar"));
-    Assertions.assertFalse(fsView.exists(new Path("/user/dirFoo")),
+    assertFalse(fsView.exists(new Path("/user/dirFoo")),
         "Renamed src should not exist");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"user/dirFoo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "user/dirFoo")),
         "Renamed src should not exist in target");
-    Assertions.assertTrue(fsView.isDirectory(fileSystemTestHelper.getTestRootPath(fsView,"/user/dirFooBar")),
+    assertTrue(fsView.isDirectory(fileSystemTestHelper.getTestRootPath(fsView, "/user/dirFooBar")),
         "Renamed dest should  exist as dir");
-    Assertions.assertTrue(fsTarget.isDirectory(new Path(targetTestRoot,"user/dirFooBar")),
+    assertTrue(fsTarget.isDirectory(new Path(targetTestRoot, "user/dirFooBar")),
         "Renamed dest should  exist as dir in target");
     
     // Make a directory under a directory that's mounted from the root of another FS
     fsView.mkdirs(new Path("/targetRoot/dirFoo"));
-    Assertions.assertTrue(fsView.exists(new Path("/targetRoot/dirFoo")));
+    assertTrue(fsView.exists(new Path("/targetRoot/dirFoo")));
     boolean dirFooPresent = false;
     for (FileStatus fileStatus :
         listStatusInternal(located, new Path("/targetRoot/"))) {
@@ -376,7 +382,7 @@ private void testOperationsThroughMountLinksInternal(boolean located)
         dirFooPresent = true;
       }
     }
-    Assertions.assertTrue(dirFooPresent);
+    assertTrue(dirFooPresent);
   }
   
   // rename across mount points that point to same target also fail 
@@ -554,32 +560,32 @@ public void testOperationsThroughNestedMountPointsInternal()
     setUpNestedMountPoint();
     // Create file with nested mount point
     fileSystemTestHelper.createFile(fsView, "/user/userB/foo");
-    Assertions.assertTrue(fsView.getFileStatus(new Path("/user/userB/foo")).isFile(),
+    assertTrue(fsView.getFileStatus(new Path("/user/userB/foo")).isFile(),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.getFileStatus(new Path(targetTestRoot,"userB/foo")).isFile(),
+    assertTrue(fsTarget.getFileStatus(new Path(targetTestRoot, "userB/foo")).isFile(),
         "Target of created file should be type file");
 
     // Delete the created file with nested mount point
-    Assertions.assertTrue(fsView.delete(new Path("/user/userB/foo"), false),
+    assertTrue(fsView.delete(new Path("/user/userB/foo"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/user/userB/foo")),
+    assertFalse(fsView.exists(new Path("/user/userB/foo")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"userB/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "userB/foo")),
         "Target File should not exist after delete");
 
     // Create file with a 2 component dirs with nested mount point
     fileSystemTestHelper.createFile(fsView, "/internalDir/linkToDir2/linkToDir2/foo");
-    Assertions.assertTrue(fsView.getFileStatus(new Path("/internalDir/linkToDir2/linkToDir2/foo")).isFile(),
+    assertTrue(fsView.getFileStatus(new Path("/internalDir/linkToDir2/linkToDir2/foo")).isFile(),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.getFileStatus(new Path(targetTestRoot,"linkToDir2/foo")).isFile(),
+    assertTrue(fsTarget.getFileStatus(new Path(targetTestRoot, "linkToDir2/foo")).isFile(),
         "Target of created file should be type file");
 
     // Delete the created file with nested mount point
-    Assertions.assertTrue(fsView.delete(new Path("/internalDir/linkToDir2/linkToDir2/foo"), false),
+    assertTrue(fsView.delete(new Path("/internalDir/linkToDir2/linkToDir2/foo"), false),
         "Delete should succeed");
-    Assertions.assertFalse(fsView.exists(new Path("/internalDir/linkToDir2/linkToDir2/foo")),
+    assertFalse(fsView.exists(new Path("/internalDir/linkToDir2/linkToDir2/foo")),
         "File should not exist after delete");
-    Assertions.assertFalse(fsTarget.exists(new Path(targetTestRoot,"linkToDir2/foo")),
+    assertFalse(fsTarget.exists(new Path(targetTestRoot, "linkToDir2/foo")),
         "Target File should not exist after delete");
   }
 
@@ -607,10 +613,10 @@ public void testGetBlockLocations() throws IOException {
     FileSystemTestHelper.createFile(fsTarget, 
         targetFilePath, 10, 1024);
     Path viewFilePath = new Path("/data/largeFile");
-    Assertions.assertTrue(fsView.isFile(viewFilePath),
+    assertTrue(fsView.isFile(viewFilePath),
         "Created File should be type File");
     BlockLocation[] viewBL = fsView.getFileBlockLocations(fsView.getFileStatus(viewFilePath), 0, 10240+100);
-    Assertions.assertEquals(SupportsBlocks ? 10 : 1, viewBL.length);
+    assertEquals(SupportsBlocks ? 10 : 1, viewBL.length);
     BlockLocation[] targetBL = fsTarget.getFileBlockLocations(fsTarget.getFileStatus(targetFilePath), 0, 10240+100);
     compareBLs(viewBL, targetBL);
     
@@ -624,12 +630,12 @@ public void testGetBlockLocations() throws IOException {
   }
   
   void compareBLs(BlockLocation[] viewBL, BlockLocation[] targetBL) {
-    Assertions.assertEquals(viewBL.length, targetBL.length);
+    assertEquals(viewBL.length, targetBL.length);
     int i = 0;
     for (BlockLocation vbl : viewBL) {
-      Assertions.assertEquals(vbl.toString(), targetBL[i].toString());
-      Assertions.assertEquals(vbl.getOffset(), targetBL[i].getOffset());
-      Assertions.assertEquals(vbl.getLength(), targetBL[i].getLength());
+      assertEquals(vbl.toString(), targetBL[i].toString());
+      assertEquals(vbl.getOffset(), targetBL[i].getOffset());
+      assertEquals(vbl.getLength(), targetBL[i].getLength());
       i++;
     }
   }
@@ -663,35 +669,35 @@ private void testListOnInternalDirsOfMountTableInternal(boolean located)
 
     // list on internal dir
     dirPaths = listStatusInternal(located, new Path("/internalDir"));
-    Assertions.assertEquals(dirPaths.length, 2);
+    assertEquals(dirPaths.length, 2);
 
     fs = fileSystemTestHelper.containsPath(fsView, "/internalDir/internalDir2", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isDirectory(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isDirectory(), "A mount should appear as symlink");
     fs = fileSystemTestHelper.containsPath(fsView, "/internalDir/linkToDir2",
         dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isSymlink(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isSymlink(), "A mount should appear as symlink");
   }
 
   private void verifyRootChildren(FileStatus[] dirPaths) throws IOException {
     FileStatus fs;
-    Assertions.assertEquals(dirPaths.length, getExpectedDirPaths());
+    assertEquals(dirPaths.length, getExpectedDirPaths());
     fs = fileSystemTestHelper.containsPath(fsView, "/user", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isSymlink(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isSymlink(), "A mount should appear as symlink");
     fs = fileSystemTestHelper.containsPath(fsView, "/data", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isSymlink(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isSymlink(), "A mount should appear as symlink");
     fs = fileSystemTestHelper.containsPath(fsView, "/internalDir", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isDirectory(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isDirectory(), "A mount should appear as symlink");
     fs = fileSystemTestHelper.containsPath(fsView, "/danglingLink", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isSymlink(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isSymlink(), "A mount should appear as symlink");
     fs = fileSystemTestHelper.containsPath(fsView, "/linkToAFile", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isSymlink(), "A mount should appear as symlink");
+    assertNotNull(fs);
+    assertTrue(fs.isSymlink(), "A mount should appear as symlink");
   }
 
   int getExpectedDirPaths() {
@@ -715,27 +721,27 @@ private void testListOnMountTargetDirsInternal(boolean located)
     FileStatus[] dirPaths = listStatusInternal(located, dataPath);
 
     FileStatus fs;
-    Assertions.assertEquals(dirPaths.length, 0);
+    assertEquals(dirPaths.length, 0);
     
     // add a file
     long len = fileSystemTestHelper.createFile(fsView, "/data/foo");
     dirPaths = listStatusInternal(located, dataPath);
-    Assertions.assertEquals(dirPaths.length, 1);
+    assertEquals(dirPaths.length, 1);
     fs = fileSystemTestHelper.containsPath(fsView, "/data/foo", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isFile(), "Created file shoudl appear as a file");
-    Assertions.assertEquals(fs.getLen(), len);
+    assertNotNull(fs);
+    assertTrue(fs.isFile(), "Created file shoudl appear as a file");
+    assertEquals(fs.getLen(), len);
     
     // add a dir
     fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView, "/data/dirX"));
     dirPaths = listStatusInternal(located, dataPath);
-    Assertions.assertEquals(dirPaths.length, 2);
+    assertEquals(dirPaths.length, 2);
     fs = fileSystemTestHelper.containsPath(fsView, "/data/foo", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isFile(), "Created file shoudl appear as a file");
+    assertNotNull(fs);
+    assertTrue(fs.isFile(), "Created file shoudl appear as a file");
     fs = fileSystemTestHelper.containsPath(fsView, "/data/dirX", dirPaths);
-    Assertions.assertNotNull(fs);
-    Assertions.assertTrue(fs.isDirectory(), "Created dir should appear as a dir");
+    assertNotNull(fs);
+    assertTrue(fs.isDirectory(), "Created dir should appear as a dir");
   }
 
   private FileStatus[] listStatusInternal(boolean located, Path dataPath) throws IOException {
@@ -756,7 +762,7 @@ private FileStatus[] listStatusInternal(boolean located, Path dataPath) throws I
 
   @Test
   public void testFileStatusOnMountLink() throws IOException {
-    Assertions.assertTrue(fsView.getFileStatus(new Path("/")).isDirectory());
+    assertTrue(fsView.getFileStatus(new Path("/")).isDirectory());
     checkFileStatus(fsView, "/", fileType.isDir);
     checkFileStatus(fsView, "/user", fileType.isDir); // link followed => dir
     checkFileStatus(fsView, "/data", fileType.isDir);
@@ -769,13 +775,13 @@ public void testFileStatusOnMountLink() throws IOException {
   
   @Test
   public void testgetFSonDanglingLink() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.getFileStatus(new Path("/danglingLink")));
   }
   
   @Test
   public void testgetFSonNonExistingInternalDir() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.getFileStatus(new Path("/internalDir/nonExisting")));
   }
   
@@ -785,19 +791,19 @@ public void testgetFSonNonExistingInternalDir() throws IOException {
   
   @Test
   public void testResolvePathInternalPaths() throws IOException {
-    Assertions.assertEquals(fsView.resolvePath(new Path("/")), new Path("/"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/internalDir")),
+    assertEquals(fsView.resolvePath(new Path("/")), new Path("/"));
+    assertEquals(fsView.resolvePath(new Path("/internalDir")),
         new Path("/internalDir"));
   }
   @Test
   public void testResolvePathMountPoints() throws IOException {
-    Assertions.assertEquals(fsView.resolvePath(new Path("/user")),
+    assertEquals(fsView.resolvePath(new Path("/user")),
         new Path(targetTestRoot,"user"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/data")),
+    assertEquals(fsView.resolvePath(new Path("/data")),
         new Path(targetTestRoot,"data"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/internalDir/linkToDir2")),
+    assertEquals(fsView.resolvePath(new Path("/internalDir/linkToDir2")),
         new Path(targetTestRoot,"dir2"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/internalDir/internalDir2/linkToDir3")),
+    assertEquals(fsView.resolvePath(new Path("/internalDir/internalDir2/linkToDir3")),
         new Path(targetTestRoot,"dir3"));
 
   }
@@ -805,30 +811,30 @@ public void testResolvePathMountPoints() throws IOException {
   @Test
   public void testResolvePathThroughMountPoints() throws IOException {
     fileSystemTestHelper.createFile(fsView, "/user/foo");
-    Assertions.assertEquals(fsView.resolvePath(new Path("/user/foo")),
+    assertEquals(fsView.resolvePath(new Path("/user/foo")),
         new Path(targetTestRoot,"user/foo"));
     
     fsView.mkdirs(
         fileSystemTestHelper.getTestRootPath(fsView, "/user/dirX"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/user/dirX")),
+    assertEquals(fsView.resolvePath(new Path("/user/dirX")),
         new Path(targetTestRoot,"user/dirX"));
 
-    
+
     fsView.mkdirs(
         fileSystemTestHelper.getTestRootPath(fsView, "/user/dirX/dirY"));
-    Assertions.assertEquals(fsView.resolvePath(new Path("/user/dirX/dirY")),
+    assertEquals(fsView.resolvePath(new Path("/user/dirX/dirY")),
         new Path(targetTestRoot,"user/dirX/dirY"));
   }
 
   @Test
   public void testResolvePathDanglingLink() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.resolvePath(new Path("/danglingLink")));
   }
   
   @Test
   public void testResolvePathMissingThroughMountPoints() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.resolvePath(new Path("/user/nonExisting")));
   }
   
@@ -837,7 +843,7 @@ public void testResolvePathMissingThroughMountPoints() throws IOException {
   public void testResolvePathMissingThroughMountPoints2() throws IOException {
     fsView.mkdirs(
         fileSystemTestHelper.getTestRootPath(fsView, "/user/dirX"));
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.resolvePath(new Path("/user/dirX/nonExisting")));
   }
   
@@ -853,29 +859,29 @@ public void testResolvePathMissingThroughMountPoints2() throws IOException {
   // Mkdir on existing internal mount table succeed except for /
   @Test
   public void testInternalMkdirSlash() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView, "/")));
   }
   
   public void testInternalMkdirExisting1() throws IOException {
-    Assertions.assertTrue(fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView,
+    assertTrue(fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView,
         "/internalDir")), "mkdir of existing dir should succeed");
   }
 
   public void testInternalMkdirExisting2() throws IOException {
-    Assertions.assertTrue(fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView,
+    assertTrue(fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView,
         "/internalDir/linkToDir2")), "mkdir of existing dir should succeed");
   }
   
   // Mkdir for new internal mount table should fail
   @Test
   public void testInternalMkdirNew() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView, "/dirNew")));
   }
   @Test
   public void testInternalMkdirNew2() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.mkdirs(fileSystemTestHelper.getTestRootPath(fsView, "/internalDir/dirNew")));
   }
   
@@ -883,32 +889,32 @@ public void testInternalMkdirNew2() throws IOException {
   
   @Test
   public void testInternalCreate1() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fileSystemTestHelper.createFile(fsView, "/foo")); // 1 component
   }
   
   @Test
   public void testInternalCreate2() throws IOException {  // 2 component
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fileSystemTestHelper.createFile(fsView, "/internalDir/foo"));
   }
   
   @Test
   public void testInternalCreateMissingDir() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fileSystemTestHelper.createFile(fsView, "/missingDir/foo"));
   }
   
   @Test
   public void testInternalCreateMissingDir2() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fileSystemTestHelper.createFile(fsView, "/missingDir/miss2/foo"));
   }
   
   
   @Test
   public void testInternalCreateMissingDir3() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fileSystemTestHelper.createFile(fsView, "/internalDir/miss2/foo"));
   }
   
@@ -916,24 +922,24 @@ public void testInternalCreateMissingDir3() throws IOException {
   
   @Test
   public void testInternalDeleteNonExisting() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.delete(new Path("/NonExisting"), false));
   }
   @Test
   public void testInternalDeleteNonExisting2() throws IOException {
-    Assertions.assertThrows(FileNotFoundException.class,
+    assertThrows(FileNotFoundException.class,
         () -> fsView.delete(new Path("/internalDir/NonExisting"), false));
   }
   @Test
   public void testInternalDeleteExisting() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.delete(new Path("/internalDir"), false));
   }
   @Test
   public void testInternalDeleteExisting2() throws IOException {
     fsView.getFileStatus(
             new Path("/internalDir/linkToDir2")).isDirectory();
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.delete(new Path("/internalDir/linkToDir2"), false));
   } 
   
@@ -941,7 +947,7 @@ public void testInternalDeleteExisting2() throws IOException {
   public void testMkdirOfMountLink() throws IOException {
     // data exists - mkdirs returns true even though no permission in internal
     // mount table
-    Assertions.assertTrue(fsView.mkdirs(new Path("/data")),
+    assertTrue(fsView.mkdirs(new Path("/data")),
         "mkdir of existing mount link should succeed");
   }
   
@@ -950,35 +956,35 @@ public void testMkdirOfMountLink() throws IOException {
   
   @Test
   public void testInternalRename1() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.rename(new Path("/internalDir"), new Path("/newDir")));
   }
   @Test
   public void testInternalRename2() throws IOException {
     fsView.getFileStatus(new Path("/internalDir/linkToDir2")).isDirectory();
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.rename(new Path("/internalDir/linkToDir2"),
         new Path("/internalDir/dir1")));
   }
   @Test
   public void testInternalRename3() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.rename(new Path("/user"), new Path("/internalDir/linkToDir2")));
   }
   @Test
   public void testInternalRenameToSlash() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.rename(new Path("/internalDir/linkToDir2/foo"), new Path("/")));
   }
   @Test
   public void testInternalRenameFromSlash() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.rename(new Path("/"), new Path("/bar")));
   }
   
   @Test
   public void testInternalSetOwner() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.setOwner(new Path("/internalDir"), "foo", "bar"));
   }
   
@@ -987,9 +993,9 @@ public void testCreateNonRecursive() throws IOException {
     Path path = fileSystemTestHelper.getTestRootPath(fsView, "/user/foo");
     fsView.createNonRecursive(path, false, 1024, (short)1, 1024L, null);
     FileStatus status = fsView.getFileStatus(new Path("/user/foo"));
-    Assertions.assertTrue(fsView.isFile(new Path("/user/foo")),
+    assertTrue(fsView.isFile(new Path("/user/foo")),
         "Created file should be type file");
-    Assertions.assertTrue(fsTarget.isFile(new Path(targetTestRoot, "user/foo")),
+    assertTrue(fsTarget.isFile(new Path(targetTestRoot, "user/foo")),
         "Target of created file should be type file");
   }
 
@@ -1007,10 +1013,10 @@ private void testRootReadableExecutableInternal(boolean located)
       throws IOException {
     // verify executable permission on root: cd /
     //
-    Assertions.assertFalse(fsView.getWorkingDirectory().isRoot(),
+    assertFalse(fsView.getWorkingDirectory().isRoot(),
         "In root before cd");
     fsView.setWorkingDirectory(new Path("/"));
-    Assertions.assertTrue(fsView.getWorkingDirectory().isRoot(),
+    assertTrue(fsView.getWorkingDirectory().isRoot(),
         "Not in root dir after cd");
 
     // verify readable
@@ -1024,17 +1030,17 @@ private void testRootReadableExecutableInternal(boolean located)
         fsView.getFileStatus(fsView.getWorkingDirectory());
     final FsPermission perms = rootStatus.getPermission();
 
-    Assertions.assertTrue(perms.getUserAction().implies(FsAction.EXECUTE),
+    assertTrue(perms.getUserAction().implies(FsAction.EXECUTE),
         "User-executable permission not set!");
-    Assertions.assertTrue(perms.getUserAction().implies(FsAction.READ),
+    assertTrue(perms.getUserAction().implies(FsAction.READ),
         "User-readable permission not set!");
-    Assertions.assertTrue(perms.getGroupAction().implies(FsAction.EXECUTE),
+    assertTrue(perms.getGroupAction().implies(FsAction.EXECUTE),
         "Group-executable permission not set!");
-    Assertions.assertTrue(perms.getGroupAction().implies(FsAction.READ),
+    assertTrue(perms.getGroupAction().implies(FsAction.READ),
         "Group-readable permission not set!");
-    Assertions.assertTrue(perms.getOtherAction().implies(FsAction.EXECUTE),
+    assertTrue(perms.getOtherAction().implies(FsAction.EXECUTE),
         "Other-executable permission not set!");
-    Assertions.assertTrue(perms.getOtherAction().implies(FsAction.READ),
+    assertTrue(perms.getOtherAction().implies(FsAction.READ),
         "Other-readable permission not set!");
   }
 
@@ -1045,33 +1051,33 @@ private void testRootReadableExecutableInternal(boolean located)
 
   @Test
   public void testInternalModifyAclEntries() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.modifyAclEntries(new Path("/internalDir"),
         new ArrayList<AclEntry>()));
   }
 
   @Test
   public void testInternalRemoveAclEntries() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.removeAclEntries(new Path("/internalDir"),
         new ArrayList<AclEntry>()));
   }
 
   @Test
   public void testInternalRemoveDefaultAcl() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.removeDefaultAcl(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalRemoveAcl() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.removeAcl(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalSetAcl() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.setAcl(new Path("/internalDir"), new ArrayList<AclEntry>()));
   }
 
@@ -1080,94 +1086,94 @@ public void testInternalGetAclStatus() throws IOException {
     final UserGroupInformation currentUser =
         UserGroupInformation.getCurrentUser();
     AclStatus aclStatus = fsView.getAclStatus(new Path("/internalDir"));
-    Assertions.assertEquals(currentUser.getUserName(), aclStatus.getOwner());
-    Assertions.assertEquals(currentUser.getGroupNames()[0], aclStatus.getGroup());
-    Assertions.assertEquals(AclUtil.getMinimalAcl(PERMISSION_555), aclStatus.getEntries());
-    Assertions.assertFalse(aclStatus.isStickyBit());
+    assertEquals(currentUser.getUserName(), aclStatus.getOwner());
+    assertEquals(currentUser.getGroupNames()[0], aclStatus.getGroup());
+    assertEquals(AclUtil.getMinimalAcl(PERMISSION_555), aclStatus.getEntries());
+    assertFalse(aclStatus.isStickyBit());
   }
 
   @Test
   public void testInternalSetXAttr() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.setXAttr(new Path("/internalDir"), "xattrName", null));
   }
 
   @Test
   public void testInternalGetXAttr() throws IOException {
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> fsView.getXAttr(new Path("/internalDir"), "xattrName"));
   }
 
   @Test
   public void testInternalGetXAttrs() throws IOException {
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> fsView.getXAttrs(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalGetXAttrsWithNames() throws IOException {
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> fsView.getXAttrs(new Path("/internalDir"), new ArrayList<String>()));
   }
 
   @Test
   public void testInternalListXAttr() throws IOException {
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> fsView.listXAttrs(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalRemoveXAttr() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.removeXAttr(new Path("/internalDir"), "xattrName"));
   }
 
   @Test
   public void testInternalCreateSnapshot1() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.createSnapshot(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalCreateSnapshot2() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.createSnapshot(new Path("/internalDir"), "snap1"));
   }
 
   @Test
   public void testInternalRenameSnapshot() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.renameSnapshot(new Path("/internalDir"), "snapOldName",
         "snapNewName"));
   }
 
   @Test
   public void testInternalDeleteSnapshot() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.deleteSnapshot(new Path("/internalDir"), "snap1"));
   }
 
   @Test
   public void testInternalSetStoragePolicy() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.setStoragePolicy(new Path("/internalDir"), "HOT"));
   }
 
   @Test
   public void testInternalUnsetStoragePolicy() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.unsetStoragePolicy(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalSatisfyStoragePolicy() throws IOException {
-    Assertions.assertThrows(AccessControlException.class,
+    assertThrows(AccessControlException.class,
         () -> fsView.satisfyStoragePolicy(new Path("/internalDir")));
   }
 
   @Test
   public void testInternalgetStoragePolicy() throws IOException {
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> fsView.getStoragePolicy(new Path("/internalDir")));
   }
 
@@ -1178,7 +1184,7 @@ public void testInternalGetAllStoragePolicies() throws IOException {
     for (FileSystem fs : fsView.getChildFileSystems()) {
       try {
         for (BlockStoragePolicySpi s : fs.getAllStoragePolicies()) {
-          Assertions.assertTrue(policies.contains(s), "Missing policy: " + s);
+          assertTrue(policies.contains(s), "Missing policy: " + s);
         }
       } catch (UnsupportedOperationException e) {
         // ignore
@@ -1231,17 +1237,17 @@ public void testTrashRoot() throws IOException {
 
     // Verify if Trash roots from ViewFileSystem matches that of the ones
     // from the target mounted FileSystem.
-    Assertions.assertEquals(fsTargetRootTrashRoot.toUri().getPath(),
+    assertEquals(fsTargetRootTrashRoot.toUri().getPath(),
         mountDataRootTrashPath.toUri().getPath());
-    Assertions.assertEquals(fsTargetFileTrashPath.toUri().getPath(),
+    assertEquals(fsTargetFileTrashPath.toUri().getPath(),
         mountDataFileTrashPath.toUri().getPath());
-    Assertions.assertEquals(mountDataFileTrashPath.toUri().getPath(),
+    assertEquals(mountDataFileTrashPath.toUri().getPath(),
         mountDataRootTrashPath.toUri().getPath());
 
 
     // Verify trash root for an non-existing file but on a valid mountpoint.
     Path trashRoot = fsView.getTrashRoot(mountDataNonExistingFilePath);
-    Assertions.assertEquals(trashRoot.toUri().getPath(),
+    assertEquals(trashRoot.toUri().getPath(),
         mountDataRootTrashPath.toUri().getPath());
 
     // Verify trash root for invalid mounts.
@@ -1272,12 +1278,12 @@ public void testTrashRoot() throws IOException {
     newConf.setLong("fs.trash.interval", 1000);
     Trash lTrash = new Trash(fsTarget, newConf);
     boolean trashed = lTrash.moveToTrash(fsTargetFilePath);
-    Assertions.assertTrue(trashed, "File " + fileStatus + " move to " +
+    assertTrue(trashed, "File " + fileStatus + " move to " +
         "trash failed.");
 
     // Verify ViewFileSystem trash roots shows the ones from
     // target mounted FileSystem.
-    Assertions.assertTrue(fsView.getTrashRoots(true).size() > 0, "");
+    assertTrue(fsView.getTrashRoots(true).size() > 0, "");
   }
 
   // Default implementation of getTrashRoot for a fallback FS mounted at root:
@@ -1303,14 +1309,14 @@ public void testTrashRootForceInsideMountPoint() throws IOException {
     Path dataTestPath = new Path("/data/dir/file");
     Path dataTrashRoot = fsView2.makeQualified(
         new Path("/data/" + TRASH_PREFIX + "/" + ugi.getShortUserName()));
-    Assertions.assertEquals(fsView2.getTrashRoot(dataTestPath), dataTrashRoot);
+    assertEquals(fsView2.getTrashRoot(dataTestPath), dataTrashRoot);
 
     // Case 2: path p not found in mount table.
     // Return a trash root in fallback FS.
     Path nonExistentPath = new Path("/nonExistentDir/nonExistentFile");
     Path expectedTrash =
         fsView2.makeQualified(getTrashRootInFallBackFS());
-    Assertions.assertEquals(fsView2.getTrashRoot(nonExistentPath), expectedTrash);
+    assertEquals(fsView2.getTrashRoot(nonExistentPath), expectedTrash);
 
     // Case 3: turn off the CONFIG_VIEWFS_TRASH_FORCE_INSIDE_MOUNT_POINT flag.
     // Return a trash root in user home dir.
@@ -1318,7 +1324,7 @@ public void testTrashRootForceInsideMountPoint() throws IOException {
     fsView2 = FileSystem.get(FsConstants.VIEWFS_URI, conf2);
     Path targetFSUserHomeTrashRoot = fsTarget.makeQualified(
         new Path(fsTarget.getHomeDirectory(), TRASH_PREFIX));
-    Assertions.assertEquals(fsView2.getTrashRoot(dataTestPath),
+    assertEquals(fsView2.getTrashRoot(dataTestPath),
         targetFSUserHomeTrashRoot);
 
     // Case 4: viewFS without fallback. Expect exception for a nonExistent path
@@ -1359,7 +1365,7 @@ public void testTrashRootDeepTrashDir() throws IOException {
     FileSystem fsView2 = FileSystem.get(FsConstants.VIEWFS_URI, conf2);
     Path expectedTrash = fsView2.makeQualified(
         new Path("/mnt/datavol1/very/deep/deep/trash/dir/.Trash"));
-    Assertions.assertEquals(fsView2.getTrashRoot(testPath), expectedTrash);
+    assertEquals(fsView2.getTrashRoot(testPath), expectedTrash);
   }
 
   /**
@@ -1374,7 +1380,7 @@ public void testTrashRootsAllUsers() throws IOException {
     // Case 1: verify correct trash roots from fsView and fsView2
     int beforeTrashRootNum = fsView.getTrashRoots(true).size();
     int beforeTrashRootNum2 = fsView2.getTrashRoots(true).size();
-    Assertions.assertEquals(beforeTrashRootNum2, beforeTrashRootNum);
+    assertEquals(beforeTrashRootNum2, beforeTrashRootNum);
 
     fsView.mkdirs(new Path("/data/" + TRASH_PREFIX + "/user1"));
     fsView.mkdirs(new Path("/data/" + TRASH_PREFIX + "/user2"));
@@ -1383,8 +1389,8 @@ public void testTrashRootsAllUsers() throws IOException {
     fsView.mkdirs(new Path("/user2/" + TRASH_PREFIX + "/user5"));
     int afterTrashRootsNum = fsView.getTrashRoots(true).size();
     int afterTrashRootsNum2 = fsView2.getTrashRoots(true).size();
-    Assertions.assertEquals(afterTrashRootsNum, beforeTrashRootNum);
-    Assertions.assertEquals(afterTrashRootsNum2, beforeTrashRootNum2 + 5);
+    assertEquals(afterTrashRootsNum, beforeTrashRootNum);
+    assertEquals(afterTrashRootsNum2, beforeTrashRootNum2 + 5);
 
     // Case 2: per-user mount point
     fsTarget.mkdirs(new Path(targetTestRoot, "Users/userA/.Trash/userA"));
@@ -1393,7 +1399,7 @@ public void testTrashRootsAllUsers() throws IOException {
         new Path(targetTestRoot, "Users/userA").toUri());
     FileSystem fsView3 = FileSystem.get(FsConstants.VIEWFS_URI, conf3);
     int trashRootsNum3 = fsView3.getTrashRoots(true).size();
-    Assertions.assertEquals(trashRootsNum3, afterTrashRootsNum2 + 1);
+    assertEquals(trashRootsNum3, afterTrashRootsNum2 + 1);
 
     // Case 3: single /Users mount point for all users
     fsTarget.mkdirs(new Path(targetTestRoot, "Users/.Trash/user1"));
@@ -1403,7 +1409,7 @@ public void testTrashRootsAllUsers() throws IOException {
         new Path(targetTestRoot, "Users").toUri());
     FileSystem fsView4 = FileSystem.get(FsConstants.VIEWFS_URI, conf4);
     int trashRootsNum4 = fsView4.getTrashRoots(true).size();
-    Assertions.assertEquals(trashRootsNum4, afterTrashRootsNum2 + 2);
+    assertEquals(trashRootsNum4, afterTrashRootsNum2 + 2);
 
     // Case 4: test trash roots in fallback FS
     fsTarget.mkdirs(new Path(targetTestRoot, ".Trash/user10"));
@@ -1413,7 +1419,7 @@ public void testTrashRootsAllUsers() throws IOException {
     ConfigUtil.addLinkFallback(conf5, targetTestRoot.toUri());
     FileSystem fsView5 = FileSystem.get(FsConstants.VIEWFS_URI, conf5);
     int trashRootsNum5 = fsView5.getTrashRoots(true).size();
-    Assertions.assertEquals(trashRootsNum5, afterTrashRootsNum2 + 3);
+    assertEquals(trashRootsNum5, afterTrashRootsNum2 + 3);
   }
 
   /**
@@ -1429,7 +1435,7 @@ public void testTrashRootsCurrentUser() throws IOException {
 
     int beforeTrashRootNum = fsView.getTrashRoots(false).size();
     int beforeTrashRootNum2 = fsView2.getTrashRoots(false).size();
-    Assertions.assertEquals(beforeTrashRootNum2, beforeTrashRootNum);
+    assertEquals(beforeTrashRootNum2, beforeTrashRootNum);
 
     fsView.mkdirs(new Path("/data/" + TRASH_PREFIX + "/" + currentUser));
     fsView.mkdirs(new Path("/data/" + TRASH_PREFIX + "/user2"));
@@ -1438,8 +1444,8 @@ public void testTrashRootsCurrentUser() throws IOException {
     fsView.mkdirs(new Path("/user2/" + TRASH_PREFIX + "/user5"));
     int afterTrashRootsNum = fsView.getTrashRoots(false).size();
     int afterTrashRootsNum2 = fsView2.getTrashRoots(false).size();
-    Assertions.assertEquals(afterTrashRootsNum, beforeTrashRootNum);
-    Assertions.assertEquals(afterTrashRootsNum2, beforeTrashRootNum2 + 2);
+    assertEquals(afterTrashRootsNum, beforeTrashRootNum);
+    assertEquals(afterTrashRootsNum2, beforeTrashRootNum2 + 2);
 
     // Test trash roots in fallback FS
     Configuration conf3 = new Configuration(conf2);
@@ -1447,7 +1453,7 @@ public void testTrashRootsCurrentUser() throws IOException {
     ConfigUtil.addLinkFallback(conf3, targetTestRoot.toUri());
     FileSystem fsView3 = FileSystem.get(FsConstants.VIEWFS_URI, conf3);
     int trashRootsNum3 = fsView3.getTrashRoots(false).size();
-    Assertions.assertEquals(trashRootsNum3, afterTrashRootsNum2 + 1);
+    assertEquals(trashRootsNum3, afterTrashRootsNum2 + 1);
   }
 
   @Test
@@ -1456,41 +1462,41 @@ public void testViewFileSystemUtil() throws Exception {
 
     FileSystem fileSystem = FileSystem.get(FsConstants.LOCAL_FS_URI,
         newConf);
-    Assertions.assertFalse(ViewFileSystemUtil.isViewFileSystem(fileSystem),
+    assertFalse(ViewFileSystemUtil.isViewFileSystem(fileSystem),
         "Unexpected FileSystem: " + fileSystem);
 
     fileSystem = FileSystem.get(FsConstants.VIEWFS_URI,
         newConf);
-    Assertions.assertTrue(ViewFileSystemUtil.isViewFileSystem(fileSystem),
+    assertTrue(ViewFileSystemUtil.isViewFileSystem(fileSystem),
         "Unexpected FileSystem: " + fileSystem);
 
     // Case 1: Verify FsStatus of root path returns all MountPoints status.
     Map<MountPoint, FsStatus> mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem, InodeTree.SlashPath);
-    Assertions.assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
+    assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
 
     // Case 2: Verify FsStatus of an internal dir returns all
     // MountPoints status.
     mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem, new Path("/internalDir"));
-    Assertions.assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
+    assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
 
     // Case 3: Verify FsStatus of a matching MountPoint returns exactly
     // the corresponding MountPoint status.
     mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem, new Path("/user"));
-    Assertions.assertEquals(mountPointFsStatusMap.size(), 1);
+    assertEquals(mountPointFsStatusMap.size(), 1);
     for (Entry<MountPoint, FsStatus> entry : mountPointFsStatusMap.entrySet()) {
-      Assertions.assertEquals("/user", entry.getKey().getMountedOnPath().toString());
+      assertEquals("/user", entry.getKey().getMountedOnPath().toString());
     }
 
     // Case 4: Verify FsStatus of a path over a MountPoint returns the
     // corresponding MountPoint status.
     mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem, new Path("/user/cloud"));
-    Assertions.assertEquals(mountPointFsStatusMap.size(), 1);
+    assertEquals(mountPointFsStatusMap.size(), 1);
     for (Entry<MountPoint, FsStatus> entry : mountPointFsStatusMap.entrySet()) {
-      Assertions.assertEquals("/user", entry.getKey().getMountedOnPath().toString());
+      assertEquals("/user", entry.getKey().getMountedOnPath().toString());
     }
 
     // Case 5: Verify FsStatus of any level of an internal dir
@@ -1498,20 +1504,20 @@ public void testViewFileSystemUtil() throws Exception {
     mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem,
             new Path("/internalDir/internalDir2"));
-    Assertions.assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
+    assertEquals(mountPointFsStatusMap.size(), getExpectedMountPoints());
 
     // Case 6: Verify FsStatus of a MountPoint URI returns
     // the MountPoint status.
     mountPointFsStatusMap =
         ViewFileSystemUtil.getStatus(fileSystem, new Path("viewfs:/user/"));
-    Assertions.assertEquals(mountPointFsStatusMap.size(), 1);
+    assertEquals(mountPointFsStatusMap.size(), 1);
     for (Entry<MountPoint, FsStatus> entry : mountPointFsStatusMap.entrySet()) {
-      Assertions.assertEquals("/user", entry.getKey().getMountedOnPath().toString());
+      assertEquals("/user", entry.getKey().getMountedOnPath().toString());
     }
 
     // Case 7: Verify FsStatus of a non MountPoint path throws exception
     final FileSystem fsCopy = fileSystem;
-    Assertions.assertThrows(NotInMountpointException.class,
+    assertThrows(NotInMountpointException.class,
         () -> ViewFileSystemUtil.getStatus(fsCopy, new Path("/non-existing")));
   }
 
@@ -1525,10 +1531,10 @@ public void testCheckOwnerWithFileStatus()
       public Object run() throws IOException {
         UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
         String doAsUserName = ugi.getUserName();
-        Assertions.assertEquals("user@HADOOP.COM", doAsUserName);
+        assertEquals("user@HADOOP.COM", doAsUserName);
         FileSystem vfs = FileSystem.get(FsConstants.VIEWFS_URI, conf);
         FileStatus stat = vfs.getFileStatus(new Path("/internalDir"));
-        Assertions.assertEquals(stat.getOwner(), userUgi.getShortUserName());
+        assertEquals(stat.getOwner(), userUgi.getShortUserName());
         return null;
       }
     });
@@ -1546,7 +1552,7 @@ public void testUsed() throws IOException {
     long usedSpaceByPathViaViewFs = fsView.getUsed(new Path("/user"));
     long usedSpaceByPathViaTargetFs =
         fsTarget.getUsed(new Path(targetTestRoot, "user"));
-    Assertions.assertEquals(usedSpaceByPathViaTargetFs, usedSpaceByPathViaViewFs,
+    assertEquals(usedSpaceByPathViaTargetFs, usedSpaceByPathViaViewFs,
         "Space used not matching between ViewFileSystem and " +
             "the mounted FileSystem!");
 
@@ -1558,7 +1564,7 @@ public void testUsed() throws IOException {
 
     usedSpaceByPathViaViewFs = fsView.getUsed(mountDataFilePath);
     usedSpaceByPathViaTargetFs = fsTarget.getUsed(fsTargetFilePath);
-    Assertions.assertEquals(usedSpaceByPathViaTargetFs, usedSpaceByPathViaViewFs,
+    assertEquals(usedSpaceByPathViaTargetFs, usedSpaceByPathViaViewFs,
         "Space used not matching between ViewFileSystem and " +
             "the mounted FileSystem!");
   }
@@ -1566,7 +1572,7 @@ public void testUsed() throws IOException {
   @Test
   public void testLinkTarget() throws Exception {
 
-    Assumptions.assumeTrue(fsTarget.supportsSymlinks() &&
+    assumeTrue(fsTarget.supportsSymlinks() &&
         fsTarget.areSymlinksEnabled());
 
     // Symbolic link
@@ -1586,7 +1592,7 @@ public void testLinkTarget() throws Exception {
     final Path actualMountLinkTarget = fsView.getLinkTarget(
         mountTargetSymLinkPath);
 
-    Assertions.assertEquals(expectedMountLinkTarget, actualMountLinkTarget,
+    assertEquals(expectedMountLinkTarget, actualMountLinkTarget,
         "Resolved link target path not matching!");
 
     // Relative symbolic link
@@ -1603,7 +1609,7 @@ public void testLinkTarget() throws Exception {
     final Path actualMountRelLinkTarget = fsView.getLinkTarget(
         mountTargetRelativeSymLinkPath);
 
-    Assertions.assertEquals(expectedMountRelLinkTarget, actualMountRelLinkTarget,
+    assertEquals(expectedMountRelLinkTarget, actualMountRelLinkTarget,
         "Resolved relative link target path not matching!");
 
     try {
@@ -1639,10 +1645,10 @@ public void testViewFileSystemInnerCache() throws Exception {
     FileSystem fs = cache.get(fsTarget.getUri(), conf);
 
     // InnerCache caches filesystem.
-    Assertions.assertSame(cache.get(fsTarget.getUri(), conf), fs);
+    assertSame(cache.get(fsTarget.getUri(), conf), fs);
 
     // InnerCache and FileSystem.CACHE are independent.
-    Assertions.assertNotSame(FileSystem.get(fsTarget.getUri(), conf), fs);
+    assertNotSame(FileSystem.get(fsTarget.getUri(), conf), fs);
 
     // close InnerCache.
     cache.closeAll();
@@ -1667,14 +1673,14 @@ public void testCloseChildrenFileSystem() throws Exception {
     URI uri = new URI("viewfs://" + clusterName + "/");
 
     ViewFileSystem viewFs = (ViewFileSystem) FileSystem.get(uri, config);
-    Assertions.assertTrue(viewFs.getChildFileSystems().length > 0,
+    assertTrue(viewFs.getChildFileSystems().length > 0,
         "viewfs should have at least one child fs.");
     // viewFs is cached in FileSystem.CACHE
-    Assertions.assertSame(FileSystem.get(uri, config), viewFs);
+    assertSame(FileSystem.get(uri, config), viewFs);
 
     // child fs is not cached in FileSystem.CACHE
     FileSystem child = viewFs.getChildFileSystems()[0];
-    Assertions.assertNotSame(FileSystem.get(child.getUri(), config), child);
+    assertNotSame(FileSystem.get(child.getUri(), config), child);
 
     viewFs.close();
     for (FileSystem childfs : viewFs.getChildFileSystems()) {
@@ -1702,9 +1708,9 @@ public void testChildrenFileSystemLeak() throws Exception {
         .get(new URI("viewfs://" + clusterName + "/"), config);
     viewFs.resolvePath(
         new Path(String.format("viewfs://%s/%s", clusterName, "/user")));
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
     viewFs.close();
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize);
   }
 
   @Test
@@ -1719,12 +1725,12 @@ public void testDeleteOnExit() throws Exception {
     ViewFileSystem viewFs = (ViewFileSystem) FileSystem
         .get(new URI("viewfs://" + clusterName + "/"), config);
     viewFs.mkdirs(testDir);
-    Assertions.assertTrue(viewFs.exists(testDir));
-    Assertions.assertTrue(fsTarget.exists(realTestPath));
+    assertTrue(viewFs.exists(testDir));
+    assertTrue(fsTarget.exists(realTestPath));
 
     viewFs.deleteOnExit(testDir);
     viewFs.close();
-    Assertions.assertFalse(fsTarget.exists(realTestPath));
+    assertFalse(fsTarget.exists(realTestPath));
   }
 
   @Test
@@ -1744,13 +1750,13 @@ public void testGetContentSummary() throws IOException {
 
     ContentSummary summaryAfter =
         fsView.getContentSummary(new Path("/internalDir"));
-    Assertions.assertEquals(summaryBefore.getFileCount() + 1,
+    assertEquals(summaryBefore.getFileCount() + 1,
         summaryAfter.getFileCount(),
         "The file count didn't match");
-    Assertions.assertEquals(summaryBefore.getLength() + expected.length(),
+    assertEquals(summaryBefore.getLength() + expected.length(),
         summaryAfter.getLength(),
         "The size didn't match");
-    Assertions.assertEquals(summaryBefore.getDirectoryCount() + 1,
+    assertEquals(summaryBefore.getDirectoryCount() + 1,
         summaryAfter.getDirectoryCount(),
         "The directory count didn't match");
   }
@@ -1770,10 +1776,10 @@ public void testGetContentSummaryWithFileInLocalFS() throws Exception {
     try (FileSystem fs = FileSystem.get(FsConstants.VIEWFS_URI, conf)) {
       ContentSummary summaryAfter =
           fs.getContentSummary(new Path("/internalDir"));
-      Assertions.assertEquals(summaryAfter.getFileCount(),
+      assertEquals(summaryAfter.getFileCount(),
           summaryBefore.getFileCount() + 1,
           "The file count didn't match");
-      Assertions.assertEquals(summaryAfter.getLength(),
+      assertEquals(summaryAfter.getLength(),
           summaryBefore.getLength() + expected.length(),
           "The directory count didn't match");
     }
@@ -1799,7 +1805,7 @@ public void testTargetFileSystemLazyInitialization() throws Exception {
     // cache size will remain the same
     // cache is disabled for viewfs scheme, so the viewfs:// instance won't
     // go in the cache even after the initialization
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize);
 
     // This resolve path will initialize the file system corresponding
     // to the mount table entry of the path "/user"
@@ -1807,17 +1813,17 @@ public void testTargetFileSystemLazyInitialization() throws Exception {
         new Path(String.format("viewfs://%s/%s", clusterName, "/user")));
 
     // Cache size will increase by 1.
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
     // This resolve path will initialize the file system corresponding
     // to the mount table entry of the path "/mock"
     viewFs.resolvePath(new Path(String.format("viewfs://%s/%s", clusterName,
         "/mock")));
     // One more file system instance will get initialized.
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 2);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 2);
     viewFs.close();
     // Initialized FileSystem instances will not be removed from cache as
     // viewfs inner cache is disabled
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 2);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 2);
   }
 
   @Test
@@ -1841,13 +1847,13 @@ public void testTargetFileSystemLazyInitializationForChecksumMethods()
     // cache size will remain the same
     // cache is disabled for viewfs scheme, so the viewfs:// instance won't
     // go in the cache even after the initialization
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize);
 
     // This is not going to initialize any filesystem instance
     viewFs.setVerifyChecksum(true);
 
     // Cache size will remain the same
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize);
 
     // This resolve path will initialize the file system corresponding
     // to the mount table entry of the path "/user"
@@ -1855,12 +1861,12 @@ public void testTargetFileSystemLazyInitializationForChecksumMethods()
         new Path(String.format("viewfs://%s/%s", clusterName, "/user")));
 
     // Cache size will increase by 1.
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
 
     viewFs.close();
     // Initialized FileSystem instances will not be removed from cache as
     // viewfs inner cache is disabled
-    Assertions.assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
+    assertEquals(TestFileUtil.getCacheSize(), cacheSize + 1);
   }
 
   @Test
@@ -1876,7 +1882,7 @@ public void testInvalidMountPoints() throws Exception {
           new URI("viewfs://" + clusterName + "/"), config);
       fail("FileSystem should not initialize. Should fail with IOException");
     } catch (IOException ex) {
-      Assertions.assertTrue(ex.getMessage().startsWith("URISyntax exception"),
+      assertTrue(ex.getMessage().startsWith("URISyntax exception"),
           "Should get URISyntax Exception");
     }
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
index b2d7416aa76..8f9ac895946 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/fs/viewfs/ViewFsTestSetup.java
@@ -17,6 +17,8 @@
  */
 package org.apache.hadoop.fs.viewfs;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -31,7 +33,6 @@
 import org.apache.hadoop.fs.viewfs.ViewFileSystemOverloadScheme.ChildFsGetter;
 import org.apache.hadoop.util.Shell;
 import org.eclipse.jetty.util.log.Log;
-import org.junit.Assert;
 
 
 /**
@@ -164,7 +165,7 @@ static void addMountLinksToFile(String mountTable, String[] sources,
           out.writeBytes("<property><name>");
           if (isNfly) {
             String[] srcParts = src.split("[.]");
-            Assert.assertEquals("Invalid NFlyLink format", 3, srcParts.length);
+            assertEquals(3, srcParts.length, "Invalid NFlyLink format");
             String actualSrc = srcParts[srcParts.length - 1];
             String params = srcParts[srcParts.length - 2];
             out.writeBytes(prefix + Constants.CONFIG_VIEWFS_LINK_NFLY + "."
@@ -202,7 +203,7 @@ public static void addMountLinksToConf(String mountTable, String[] sources,
       boolean isNfly = src.startsWith(Constants.CONFIG_VIEWFS_LINK_NFLY);
       if (isNfly) {
         String[] srcParts = src.split("[.]");
-        Assert.assertEquals("Invalid NFlyLink format", 3, srcParts.length);
+        assertEquals(3, srcParts.length, "Invalid NFlyLink format");
         String actualSrc = srcParts[srcParts.length - 1];
         String params = srcParts[srcParts.length - 2];
         ConfigUtil.addLinkNfly(config, mountTableName, actualSrc, params,
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/ClientBaseWithFixes.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/ClientBaseWithFixes.java
index fdb5c90ad56..8976a7cf9fa 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/ClientBaseWithFixes.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/ClientBaseWithFixes.java
@@ -18,6 +18,10 @@
 
 package org.apache.hadoop.ha;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -44,9 +48,8 @@
 import org.apache.zookeeper.server.ZKDatabase;
 import org.apache.zookeeper.server.ZooKeeperServer;
 import org.apache.zookeeper.server.persistence.FileTxnLog;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -73,409 +76,397 @@ public abstract class ClientBaseWithFixes extends ZKTestCase {
     System.setProperty("zookeeper.4lw.commands.whitelist", "*");
   }
 
-    protected final String hostPort = initHostPort();
-    protected int maxCnxns = 0;
-    protected ServerCnxnFactory serverFactory = null;
-    protected File tmpDir = null;
+  protected final String hostPort = initHostPort();
+  protected int maxCnxns = 0;
+  protected ServerCnxnFactory serverFactory = null;
+  protected File tmpDir = null;
     
-    long initialFdCount;
+  long initialFdCount;
     
-    /**
-     * In general don't use this. Only use in the special case that you
-     * want to ignore results (for whatever reason) in your test. Don't
-     * use empty watchers in real code!
-     *
-     */
-    protected class NullWatcher implements Watcher {
-        @Override
-        public void process(WatchedEvent event) { /* nada */ }
-    }
+  /**
+   * In general don't use this. Only use in the special case that you
+   * want to ignore results (for whatever reason) in your test. Don't
+   * use empty watchers in real code!
+   *
+   */
+  protected class NullWatcher implements Watcher {
+    @Override
+    public void process(WatchedEvent event) { /* nada */ }
+  }
 
-    protected static class CountdownWatcher implements Watcher {
-        // XXX this doesn't need to be volatile! (Should probably be final)
-        volatile CountDownLatch clientConnected;
-        volatile boolean connected;
-        protected ZooKeeper client;
+  protected static class CountdownWatcher implements Watcher {
+    // XXX this doesn't need to be volatile! (Should probably be final)
+    volatile CountDownLatch clientConnected;
+    volatile boolean connected;
+    protected ZooKeeper client;
+
+    public void initializeWatchedClient(ZooKeeper zk) {
+      if (client != null) {
+        throw new RuntimeException("Watched Client was already set");
+      }
+      client = zk;
+    }
 
-        public void initializeWatchedClient(ZooKeeper zk) {
-            if (client != null) {
-                throw new RuntimeException("Watched Client was already set");
-            }
-            client = zk;
-        }
+    public CountdownWatcher() {
+      reset();
+    }
 
-        public CountdownWatcher() {
-            reset();
-        }
-        synchronized public void reset() {
-            clientConnected = new CountDownLatch(1);
-            connected = false;
-        }
-        @Override
-        synchronized public void process(WatchedEvent event) {
-            if (event.getState() == KeeperState.SyncConnected ||
-                event.getState() == KeeperState.ConnectedReadOnly) {
-                connected = true;
-                notifyAll();
-                clientConnected.countDown();
-            } else {
-                connected = false;
-                notifyAll();
-            }
-        }
-        synchronized boolean isConnected() {
-            return connected;
-        }
-        @VisibleForTesting
-        public synchronized void waitForConnected(long timeout)
-            throws InterruptedException, TimeoutException {
-            long expire = Time.now() + timeout;
-            long left = timeout;
-            while(!connected && left > 0) {
-                wait(left);
-                left = expire - Time.now();
-            }
-            if (!connected) {
-                throw new TimeoutException("Did not connect");
+    synchronized public void reset() {
+      clientConnected = new CountDownLatch(1);
+      connected = false;
+    }
 
-            }
-        }
-        @VisibleForTesting
-        public synchronized void waitForDisconnected(long timeout)
-            throws InterruptedException, TimeoutException {
-            long expire = Time.now() + timeout;
-            long left = timeout;
-            while(connected && left > 0) {
-                wait(left);
-                left = expire - Time.now();
-            }
-            if (connected) {
-                throw new TimeoutException("Did not disconnect");
+    @Override
+    synchronized public void process(WatchedEvent event) {
+      if (event.getState() == KeeperState.SyncConnected ||
+          event.getState() == KeeperState.ConnectedReadOnly) {
+        connected = true;
+        notifyAll();
+        clientConnected.countDown();
+      } else {
+        connected = false;
+        notifyAll();
+      }
+    }
 
-            }
-        }
+    synchronized boolean isConnected() {
+      return connected;
     }
 
-    protected TestableZooKeeper createClient()
-        throws IOException, InterruptedException
-    {
-        return createClient(hostPort);
+    @VisibleForTesting
+    public synchronized void waitForConnected(long timeout)
+        throws InterruptedException, TimeoutException {
+      long expire = Time.now() + timeout;
+      long left = timeout;
+      while(!connected && left > 0) {
+        wait(left);
+        left = expire - Time.now();
+      }
+      if (!connected) {
+        throw new TimeoutException("Did not connect");
+      }
     }
 
-    protected TestableZooKeeper createClient(String hp)
-        throws IOException, InterruptedException
-    {
-        CountdownWatcher watcher = new CountdownWatcher();
-        return createClient(watcher, hp);
+    @VisibleForTesting
+    public synchronized void waitForDisconnected(long timeout)
+        throws InterruptedException, TimeoutException {
+      long expire = Time.now() + timeout;
+      long left = timeout;
+      while(connected && left > 0) {
+        wait(left);
+        left = expire - Time.now();
+      }
+      if (connected) {
+        throw new TimeoutException("Did not disconnect");
+      }
     }
+  }
+
+  protected TestableZooKeeper createClient()
+      throws IOException, InterruptedException {
+    return createClient(hostPort);
+  }
 
-    private LinkedList<ZooKeeper> allClients;
-    private boolean allClientsSetup = false;
+  protected TestableZooKeeper createClient(String hp)
+      throws IOException, InterruptedException {
+    CountdownWatcher watcher = new CountdownWatcher();
+    return createClient(watcher, hp);
+  }
 
-    protected TestableZooKeeper createClient(CountdownWatcher watcher, String hp)
-        throws IOException, InterruptedException
-    {
-        return createClient(watcher, hp, CONNECTION_TIMEOUT);
-    }
+  private LinkedList<ZooKeeper> allClients;
+  private boolean allClientsSetup = false;
 
-    protected TestableZooKeeper createClient(CountdownWatcher watcher,
-            String hp, int timeout)
-        throws IOException, InterruptedException
-    {
-        watcher.reset();
-        TestableZooKeeper zk = new TestableZooKeeper(hp, timeout, watcher);
-        if (!watcher.clientConnected.await(timeout, TimeUnit.MILLISECONDS))
-        {
-            Assert.fail("Unable to connect to server");
-        }
-        synchronized(this) {
-            if (!allClientsSetup) {
-                LOG.error("allClients never setup");
-                Assert.fail("allClients never setup");
-            }
-            if (allClients != null) {
-                allClients.add(zk);
-            } else {
-                // test done - close the zk, not needed
-                zk.close();
-            }
-        }
-        watcher.initializeWatchedClient(zk);
-        return zk;
-    }
+  protected TestableZooKeeper createClient(CountdownWatcher watcher, String hp)
+      throws IOException, InterruptedException {
+    return createClient(watcher, hp, CONNECTION_TIMEOUT);
+  }
 
-    public static class HostPort {
-        String host;
-        int port;
-        public HostPort(String host, int port) {
-            this.host = host;
-            this.port = port;
-        }
+  protected TestableZooKeeper createClient(CountdownWatcher watcher,
+      String hp, int timeout) throws IOException, InterruptedException {
+    watcher.reset();
+    TestableZooKeeper zk = new TestableZooKeeper(hp, timeout, watcher);
+    if (!watcher.clientConnected.await(timeout, TimeUnit.MILLISECONDS)) {
+      fail("Unable to connect to server");
     }
-    public static List<HostPort> parseHostPortList(String hplist) {
-        ArrayList<HostPort> alist = new ArrayList<HostPort>();
-        for (String hp: hplist.split(",")) {
-            int idx = hp.lastIndexOf(':');
-            String host = hp.substring(0, idx);
-            int port;
-            try {
-                port = Integer.parseInt(hp.substring(idx + 1));
-            } catch(RuntimeException e) {
-                throw new RuntimeException("Problem parsing " + hp + e.toString());
-            }
-            alist.add(new HostPort(host,port));
-        }
-        return alist;
+    synchronized (this) {
+      if (!allClientsSetup) {
+        LOG.error("allClients never setup");
+        fail("allClients never setup");
+      }
+      if (allClients != null) {
+        allClients.add(zk);
+      } else {
+        // test done - close the zk, not needed
+        zk.close();
+      }
     }
+    watcher.initializeWatchedClient(zk);
+    return zk;
+  }
 
-    /**
-     * Send the 4letterword
-     * @param host the destination host
-     * @param port the destination port
-     * @param cmd the 4letterword
-     * @return
-     * @throws IOException
-     */
-    public static String send4LetterWord(String host, int port, String cmd)
-        throws IOException
-    {
-        LOG.info("connecting to " + host + " " + port);
-        Socket sock = new Socket(host, port);
-        BufferedReader reader = null;
-        try {
-            OutputStream outstream = sock.getOutputStream();
-            outstream.write(cmd.getBytes());
-            outstream.flush();
-            // this replicates NC - close the output stream before reading
-            sock.shutdownOutput();
-
-            reader =
-                new BufferedReader(
-                        new InputStreamReader(sock.getInputStream()));
-            StringBuilder sb = new StringBuilder();
-            String line;
-            while((line = reader.readLine()) != null) {
-                sb.append(line + "\n");
-            }
-            return sb.toString();
-        } finally {
-            sock.close();
-            if (reader != null) {
-                reader.close();
-            }
-        }
+  public static class HostPort {
+    String host;
+    int port;
+    public HostPort(String host, int port) {
+      this.host = host;
+      this.port = port;
     }
+  }
 
-    public static boolean waitForServerUp(String hp, long timeout) {
-        long start = Time.now();
-        while (true) {
-            try {
-                // if there are multiple hostports, just take the first one
-                HostPort hpobj = parseHostPortList(hp).get(0);
-                String result = send4LetterWord(hpobj.host, hpobj.port, "stat");
-                if (result.startsWith("Zookeeper version:") &&
-                        !result.contains("READ-ONLY")) {
-                    return true;
-                }
-            } catch (IOException e) {
-                // ignore as this is expected
-                LOG.info("server " + hp + " not up " + e);
-            }
+  public static List<HostPort> parseHostPortList(String hplist) {
+    ArrayList<HostPort> alist = new ArrayList<HostPort>();
+    for (String hp: hplist.split(",")) {
+      int idx = hp.lastIndexOf(':');
+      String host = hp.substring(0, idx);
+      int port;
+      try {
+        port = Integer.parseInt(hp.substring(idx + 1));
+      } catch(RuntimeException e) {
+        throw new RuntimeException("Problem parsing " + hp + e.toString());
+      }
+      alist.add(new HostPort(host, port));
+    }
+    return alist;
+  }
 
-            if (Time.now() > start + timeout) {
-                break;
-            }
-            try {
-                Thread.sleep(250);
-            } catch (InterruptedException e) {
-                // ignore
-            }
-        }
-        return false;
+  /**
+   * Send the 4letterword.
+   * @param host the destination host
+   * @param port the destination port
+   * @param cmd the 4letterword
+   * @return
+   * @throws IOException
+   */
+  public static String send4LetterWord(String host, int port, String cmd)
+      throws IOException {
+    LOG.info("connecting to " + host + " " + port);
+    Socket sock = new Socket(host, port);
+    BufferedReader reader = null;
+    try {
+      OutputStream outstream = sock.getOutputStream();
+      outstream.write(cmd.getBytes());
+      outstream.flush();
+      // this replicates NC - close the output stream before reading
+      sock.shutdownOutput();
+      reader = new BufferedReader(
+          new InputStreamReader(sock.getInputStream()));
+      StringBuilder sb = new StringBuilder();
+      String line;
+      while((line = reader.readLine()) != null) {
+        sb.append(line + "\n");
+      }
+      return sb.toString();
+    } finally {
+      sock.close();
+      if (reader != null) {
+        reader.close();
+      }
     }
-    public static boolean waitForServerDown(String hp, long timeout) {
-        long start = Time.now();
-        while (true) {
-            try {
-                HostPort hpobj = parseHostPortList(hp).get(0);
-                send4LetterWord(hpobj.host, hpobj.port, "stat");
-            } catch (IOException e) {
-                return true;
-            }
+  }
 
-            if (Time.now() > start + timeout) {
-                break;
-            }
-            try {
-                Thread.sleep(250);
-            } catch (InterruptedException e) {
-                // ignore
-            }
+  public static boolean waitForServerUp(String hp, long timeout) {
+    long start = Time.now();
+    while (true) {
+      try {
+        // if there are multiple hostports, just take the first one
+        HostPort hpobj = parseHostPortList(hp).get(0);
+        String result = send4LetterWord(hpobj.host, hpobj.port, "stat");
+        if (result.startsWith("Zookeeper version:") &&
+            !result.contains("READ-ONLY")) {
+          return true;
         }
-        return false;
+      } catch (IOException e) {
+        // ignore as this is expected
+        LOG.info("server " + hp + " not up " + e);
+      }
+
+      if (Time.now() > start + timeout) {
+        break;
+      }
+      try {
+        Thread.sleep(250);
+      } catch (InterruptedException e) {
+        // ignore
+      }
     }
+    return false;
+  }
 
-    public static File createTmpDir() throws IOException {
-        return createTmpDir(BASETEST);
-    }
-    static File createTmpDir(File parentDir) throws IOException {
-        File tmpFile = File.createTempFile("test", ".junit", parentDir);
-        // don't delete tmpFile - this ensures we don't attempt to create
-        // a tmpDir with a duplicate name
-        File tmpDir = new File(tmpFile + ".dir");
-        Assert.assertFalse(tmpDir.exists()); // never true if tmpfile does it's job
-        Assert.assertTrue(tmpDir.mkdirs());
-
-        return tmpDir;
+  public static boolean waitForServerDown(String hp, long timeout) {
+    long start = Time.now();
+    while (true) {
+      try {
+        HostPort hpobj = parseHostPortList(hp).get(0);
+        send4LetterWord(hpobj.host, hpobj.port, "stat");
+      } catch (IOException e) {
+        return true;
+      }
+
+      if (Time.now() > start + timeout) {
+        break;
+      }
+
+      try {
+        Thread.sleep(250);
+      } catch (InterruptedException e) {
+        // ignore
+      }
     }
+    return false;
+  }
 
-    private static int getPort(String hostPort) {
-        String[] split = hostPort.split(":");
-        String portstr = split[split.length-1];
-        String[] pc = portstr.split("/");
-        if (pc.length > 1) {
-            portstr = pc[0];
-        }
-        return Integer.parseInt(portstr);
-    }
+  public static File createTmpDir() throws IOException {
+    return createTmpDir(BASETEST);
+  }
 
-    static ServerCnxnFactory createNewServerInstance(File dataDir,
-            ServerCnxnFactory factory, String hostPort, int maxCnxns)
-        throws IOException, InterruptedException
-    {
-        ZooKeeperServer zks = new ZooKeeperServer(dataDir, dataDir, 3000);
-        final int PORT = getPort(hostPort);
-        if (factory == null) {
-            factory = ServerCnxnFactory.createFactory(PORT, maxCnxns);
-        }
-        factory.startup(zks);
-        Assert.assertTrue("waiting for server up",
-                   ClientBaseWithFixes.waitForServerUp("127.0.0.1:" + PORT,
-                                              CONNECTION_TIMEOUT));
+  static File createTmpDir(File parentDir) throws IOException {
+    File tmpFile = File.createTempFile("test", ".junit", parentDir);
+    // don't delete tmpFile - this ensures we don't attempt to create
+    // a tmpDir with a duplicate name
+    File tmpDir = new File(tmpFile + ".dir");
+    assertFalse(tmpDir.exists()); // never true if tmpfile does it's job
+    assertTrue(tmpDir.mkdirs());
+    return tmpDir;
+  }
 
-        return factory;
+  private static int getPort(String hostPort) {
+    String[] split = hostPort.split(":");
+    String portstr = split[split.length-1];
+    String[] pc = portstr.split("/");
+    if (pc.length > 1) {
+      portstr = pc[0];
     }
+    return Integer.parseInt(portstr);
+  }
 
-    static void shutdownServerInstance(ServerCnxnFactory factory,
-            String hostPort)
-    {
-        if (factory != null) {
-            ZKDatabase zkDb;
-            {
-                ZooKeeperServer zs = getServer(factory);
-        
-                zkDb = zs.getZKDatabase();
-            }
-            factory.shutdown();
-            try {
-                zkDb.close();
-            } catch (IOException ie) {
-                LOG.warn("Error closing logs ", ie);
-            }
-            final int PORT = getPort(hostPort);
-
-            Assert.assertTrue("waiting for server down",
-                       ClientBaseWithFixes.waitForServerDown("127.0.0.1:" + PORT,
-                                                    CONNECTION_TIMEOUT));
-        }
+  static ServerCnxnFactory createNewServerInstance(File dataDir,
+      ServerCnxnFactory factory, String hostPort, int maxCnxns)
+      throws IOException, InterruptedException {
+    ZooKeeperServer zks = new ZooKeeperServer(dataDir, dataDir, 3000);
+    final int port = getPort(hostPort);
+    if (factory == null) {
+      factory = ServerCnxnFactory.createFactory(port, maxCnxns);
     }
+    factory.startup(zks);
+    assertTrue(ClientBaseWithFixes.waitForServerUp("127.0.0.1:" + port,
+        CONNECTION_TIMEOUT), "waiting for server up");
+    return factory;
+  }
 
-    /**
-     * Test specific setup
-     */
-    public static void setupTestEnv() {
-        // during the tests we run with 100K prealloc in the logs.
-        // on windows systems prealloc of 64M was seen to take ~15seconds
-        // resulting in test Assert.failure (client timeout on first session).
-        // set env and directly in order to handle static init/gc issues
-        System.setProperty("zookeeper.preAllocSize", "100");
-        FileTxnLog.setPreallocSize(100 * 1024);
+  static void shutdownServerInstance(ServerCnxnFactory factory,
+      String hostPort) {
+    if (factory != null) {
+      ZKDatabase zkDb;
+      ZooKeeperServer zs = getServer(factory);
+      zkDb = zs.getZKDatabase();
+      factory.shutdown();
+      try {
+        zkDb.close();
+      } catch (IOException ie) {
+        LOG.warn("Error closing logs ", ie);
+      }
+      final int port = getPort(hostPort);
+      assertTrue(ClientBaseWithFixes.waitForServerDown("127.0.0.1:" + port,
+          CONNECTION_TIMEOUT), "waiting for server down");
     }
+  }
 
-    protected void setUpAll() throws Exception {
-        allClients = new LinkedList<ZooKeeper>();
-        allClientsSetup = true;
-    }
+  /**
+   * Test specific setup.
+   */
+  public static void setupTestEnv() {
+    // during the tests we run with 100K prealloc in the logs.
+    // on windows systems prealloc of 64M was seen to take ~15seconds
+    // resulting in test failure (client timeout on first session).
+    // set env and directly in order to handle static init/gc issues
+    System.setProperty("zookeeper.preAllocSize", "100");
+    FileTxnLog.setPreallocSize(100 * 1024);
+  }
 
-    @Before
-    public void setUp() throws Exception {
-        BASETEST.mkdirs();
+  protected void setUpAll() throws Exception {
+    allClients = new LinkedList<ZooKeeper>();
+    allClientsSetup = true;
+  }
 
-        setupTestEnv();
+  @BeforeEach
+  public void setUp() throws Exception {
+    BASETEST.mkdirs();
 
-        setUpAll();
+    setupTestEnv();
 
-        tmpDir = createTmpDir(BASETEST);
+    setUpAll();
 
-        startServer();
+    tmpDir = createTmpDir(BASETEST);
 
-        LOG.info("Client test setup finished");
-    }
+    startServer();
 
-    private String initHostPort() {
-        BASETEST.mkdirs();
-        int port = 0;
-        try {
-           port = ServerSocketUtil.getPort(port, 100);
-        } catch (IOException e) {
-           throw new RuntimeException(e);
-        }
-        return "127.0.0.1:" + port;
-    }
+    LOG.info("Client test setup finished");
+  }
 
-    protected void startServer() throws Exception {
-        LOG.info("STARTING server");
-        serverFactory = createNewServerInstance(tmpDir, serverFactory, hostPort, maxCnxns);
+  private String initHostPort() {
+    BASETEST.mkdirs();
+    int port = 0;
+    try {
+      port = ServerSocketUtil.getPort(port, 100);
+    } catch (IOException e) {
+      throw new RuntimeException(e);
     }
+    return "127.0.0.1:" + port;
+  }
 
-    protected void stopServer() throws Exception {
-        LOG.info("STOPPING server");
-        shutdownServerInstance(serverFactory, hostPort);
-        serverFactory = null;
-    }
+  protected void startServer() throws Exception {
+    LOG.info("STARTING server");
+    serverFactory = createNewServerInstance(tmpDir, serverFactory, hostPort, maxCnxns);
+  }
 
+  protected void stopServer() throws Exception {
+    LOG.info("STOPPING server");
+    shutdownServerInstance(serverFactory, hostPort);
+    serverFactory = null;
+  }
 
-    protected static ZooKeeperServer getServer(ServerCnxnFactory fac) {
-        return fac.getZooKeeperServer();
-    }
+  protected static ZooKeeperServer getServer(ServerCnxnFactory fac) {
+    return fac.getZooKeeperServer();
+  }
 
-    protected void tearDownAll() throws Exception {
-        synchronized (this) {
-            if (allClients != null) for (ZooKeeper zk : allClients) {
-                try {
-                    if (zk != null)
-                        zk.close();
-                } catch (InterruptedException e) {
-                    LOG.warn("ignoring interrupt", e);
-                }
+  protected void tearDownAll() throws Exception {
+    synchronized (this) {
+      if (allClients != null) for (ZooKeeper zk : allClients) {
+        try {
+            if (zk != null) {
+              zk.close();
             }
-            allClients = null;
+          } catch (InterruptedException e) {
+            LOG.warn("ignoring interrupt", e);
         }
+      }
+      allClients = null;
     }
+  }
 
-    @After
-    public void tearDown() throws Exception {
-        LOG.info("tearDown starting");
-
-        tearDownAll();
+  @AfterEach
+  public void tearDown() throws Exception {
+    LOG.info("tearDown starting");
 
-        stopServer();
+    tearDownAll();
 
-        if (tmpDir != null) {
-            Assert.assertTrue("delete " + tmpDir.toString(), recursiveDelete(tmpDir));
-        }
+    stopServer();
 
-        // This has to be set to null when the same instance of this class is reused between test cases
-        serverFactory = null;
+    if (tmpDir != null) {
+      assertTrue(recursiveDelete(tmpDir), "delete " + tmpDir.toString());
     }
 
-    public static boolean recursiveDelete(File d) {
-        if (d.isDirectory()) {
-            File children[] = d.listFiles();
-            for (File f : children) {
-                Assert.assertTrue("delete " + f.toString(), recursiveDelete(f));
-            }
-        }
-        return d.delete();
+    // This has to be set to null when the same instance of this class is reused between test cases
+    serverFactory = null;
+  }
+
+  public static boolean recursiveDelete(File d) {
+    if (d.isDirectory()) {
+      File[] children = d.listFiles();
+      for (File f : children) {
+        assertTrue(recursiveDelete(f), "delete " + f.toString());
+      }
     }
+    return d.delete();
+  }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestActiveStandbyElectorRealZK.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestActiveStandbyElectorRealZK.java
index 7003e99f153..88ce4db7e89 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestActiveStandbyElectorRealZK.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestActiveStandbyElectorRealZK.java
@@ -18,8 +18,14 @@
 
 package org.apache.hadoop.ha;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.reset;
 
 import java.util.Collections;
 import java.util.UUID;
@@ -33,9 +39,10 @@
 import org.apache.zookeeper.ZooDefs.Ids;
 import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.server.ZooKeeperServer;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.mockito.AdditionalMatchers;
-import org.mockito.Mockito;
 
 import org.apache.hadoop.thirdparty.com.google.common.primitives.Ints;
 import org.slf4j.event.Level;
@@ -58,7 +65,7 @@ public class TestActiveStandbyElectorRealZK extends ClientBaseWithFixes {
       new ActiveStandbyElectorCallback[NUM_ELECTORS];
   private ZooKeeperServer zkServer;
 
-  
+  @BeforeEach
   @Override
   public void setUp() throws Exception {
     super.setUp();
@@ -66,7 +73,7 @@ public void setUp() throws Exception {
     zkServer = getServer(serverFactory);
 
     for (int i = 0; i < NUM_ELECTORS; i++) {
-      cbs[i] =  Mockito.mock(ActiveStandbyElectorCallback.class);
+      cbs[i] = mock(ActiveStandbyElectorCallback.class);
       appDatas[i] = Ints.toByteArray(i);
       electors[i] = new ActiveStandbyElector(hostPort, 5000, PARENT_DIR,
           Ids.OPEN_ACL_UNSAFE, Collections.<ZKAuthInfo> emptyList(), cbs[i],
@@ -76,9 +83,9 @@ Ids.OPEN_ACL_UNSAFE, Collections.<ZKAuthInfo> emptyList(), cbs[i],
   
   private void checkFatalsAndReset() throws Exception {
     for (int i = 0; i < NUM_ELECTORS; i++) {
-      Mockito.verify(cbs[i], Mockito.never()).notifyFatalError(
-          Mockito.anyString());
-      Mockito.reset(cbs[i]);
+      verify(cbs[i], never()).notifyFatalError(
+          anyString());
+      reset(cbs[i]);
     }
   }
 
@@ -88,7 +95,8 @@ private void checkFatalsAndReset() throws Exception {
    * Upon becoming active the leader quits election and the test verifies that
    * the standby now becomes active.
    */
-  @Test(timeout=20000)
+  @Test
+  @Timeout(value = 20)
   public void testActiveStandbyTransition() throws Exception {
     LOG.info("starting test with parentDir:" + PARENT_DIR);
 
@@ -100,24 +108,24 @@ public void testActiveStandbyTransition() throws Exception {
     electors[0].joinElection(appDatas[0]);
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zkServer, PARENT_DIR, appDatas[0]);
-    Mockito.verify(cbs[0], Mockito.timeout(1000)).becomeActive();
+    verify(cbs[0], timeout(1000)).becomeActive();
     checkFatalsAndReset();
 
     // Second elector joins election, becomes standby.
     electors[1].joinElection(appDatas[1]);
-    Mockito.verify(cbs[1], Mockito.timeout(1000)).becomeStandby();
+    verify(cbs[1], timeout(1000)).becomeStandby();
     checkFatalsAndReset();
     
     // First elector quits, second one should become active
     electors[0].quitElection(true);
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zkServer, PARENT_DIR, appDatas[1]);
-    Mockito.verify(cbs[1], Mockito.timeout(1000)).becomeActive();
+    verify(cbs[1], timeout(1000)).becomeActive();
     checkFatalsAndReset();
     
     // First one rejoins, becomes standby, second one stays active
     electors[0].joinElection(appDatas[0]);
-    Mockito.verify(cbs[0], Mockito.timeout(1000)).becomeStandby();
+    verify(cbs[0], timeout(1000)).becomeStandby();
     checkFatalsAndReset();
     
     // Second one expires, first one becomes active
@@ -127,16 +135,16 @@ public void testActiveStandbyTransition() throws Exception {
       
       ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
           zkServer, PARENT_DIR, appDatas[0]);
-      Mockito.verify(cbs[1], Mockito.timeout(1000)).enterNeutralMode();
-      Mockito.verify(cbs[0], Mockito.timeout(1000)).fenceOldActive(
+      verify(cbs[1], timeout(1000)).enterNeutralMode();
+      verify(cbs[0], timeout(1000)).fenceOldActive(
           AdditionalMatchers.aryEq(appDatas[1]));
-      Mockito.verify(cbs[0], Mockito.timeout(1000)).becomeActive();
+      verify(cbs[0], timeout(1000)).becomeActive();
     } finally {
       electors[1].allowSessionReestablishmentForTests();
     }
     
     // Second one eventually reconnects and becomes standby
-    Mockito.verify(cbs[1], Mockito.timeout(5000)).becomeStandby();
+    verify(cbs[1], timeout(5000)).becomeStandby();
     checkFatalsAndReset();
     
     // First one expires, second one should become active
@@ -146,10 +154,10 @@ public void testActiveStandbyTransition() throws Exception {
       
       ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
           zkServer, PARENT_DIR, appDatas[1]);
-      Mockito.verify(cbs[0], Mockito.timeout(1000)).enterNeutralMode();
-      Mockito.verify(cbs[1], Mockito.timeout(1000)).fenceOldActive(
+      verify(cbs[0], timeout(1000)).enterNeutralMode();
+      verify(cbs[1], timeout(1000)).fenceOldActive(
           AdditionalMatchers.aryEq(appDatas[0]));
-      Mockito.verify(cbs[1], Mockito.timeout(1000)).becomeActive();
+      verify(cbs[1], timeout(1000)).becomeActive();
     } finally {
       electors[0].allowSessionReestablishmentForTests();
     }
@@ -157,7 +165,8 @@ public void testActiveStandbyTransition() throws Exception {
     checkFatalsAndReset();
   }
   
-  @Test(timeout=15000)
+  @Test
+  @Timeout(value = 15)
   public void testHandleSessionExpiration() throws Exception {
     ActiveStandbyElectorCallback cb = cbs[0];
     byte[] appData = appDatas[0];
@@ -169,19 +178,19 @@ public void testHandleSessionExpiration() throws Exception {
     ZooKeeperServer zks = getServer(serverFactory);
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zks, PARENT_DIR, appData);
-    Mockito.verify(cb, Mockito.timeout(1000)).becomeActive();
+    verify(cb, timeout(1000)).becomeActive();
     checkFatalsAndReset();
     
     LOG.info("========================== Expiring session");
     zks.closeSession(elector.getZKSessionIdForTests());
 
     // Should enter neutral mode when disconnected
-    Mockito.verify(cb, Mockito.timeout(1000)).enterNeutralMode();
+    verify(cb, timeout(1000)).enterNeutralMode();
 
     // Should re-join the election and regain active
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zks, PARENT_DIR, appData);
-    Mockito.verify(cb, Mockito.timeout(1000)).becomeActive();
+    verify(cb, timeout(1000)).becomeActive();
     checkFatalsAndReset();
     
     LOG.info("========================== Quitting election");
@@ -192,14 +201,15 @@ public void testHandleSessionExpiration() throws Exception {
     // Double check that we don't accidentally re-join the election
     // due to receiving the "expired" event.
     Thread.sleep(1000);
-    Mockito.verify(cb, Mockito.never()).becomeActive();
+    verify(cb, never()).becomeActive();
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zks, PARENT_DIR, null);
 
     checkFatalsAndReset();
   }
   
-  @Test(timeout=15000)
+  @Test
+  @Timeout(value = 15)
   public void testHandleSessionExpirationOfStandby() throws Exception {
     // Let elector 0 be active
     electors[0].ensureParentZNode();
@@ -207,7 +217,7 @@ public void testHandleSessionExpirationOfStandby() throws Exception {
     ZooKeeperServer zks = getServer(serverFactory);
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zks, PARENT_DIR, appDatas[0]);
-    Mockito.verify(cbs[0], Mockito.timeout(1000)).becomeActive();
+    verify(cbs[0], timeout(1000)).becomeActive();
     checkFatalsAndReset();
     
     // Let elector 1 be standby
@@ -219,7 +229,7 @@ public void testHandleSessionExpirationOfStandby() throws Exception {
     zks.closeSession(electors[1].getZKSessionIdForTests());
 
     // Should enter neutral mode when disconnected
-    Mockito.verify(cbs[1], Mockito.timeout(1000)).enterNeutralMode();
+    verify(cbs[1], timeout(1000)).enterNeutralMode();
 
     // Should re-join the election and go back to STANDBY
     ActiveStandbyElectorTestUtil.waitForElectorState(null, electors[1],
@@ -235,14 +245,15 @@ public void testHandleSessionExpirationOfStandby() throws Exception {
     
     // due to receiving the "expired" event.
     Thread.sleep(1000);
-    Mockito.verify(cbs[1], Mockito.never()).becomeActive();
+    verify(cbs[1], never()).becomeActive();
     ActiveStandbyElectorTestUtil.waitForActiveLockData(null,
         zks, PARENT_DIR, null);
 
     checkFatalsAndReset();
   }
 
-  @Test(timeout=15000)
+  @Test
+  @Timeout(value = 15)
   public void testDontJoinElectionOnDisconnectAndReconnect() throws Exception {
     electors[0].ensureParentZNode();
 
@@ -253,8 +264,8 @@ public void testDontJoinElectionOnDisconnectAndReconnect() throws Exception {
     waitForServerUp(hostPort, CONNECTION_TIMEOUT);
     // Have to sleep to allow time for the clients to reconnect.
     Thread.sleep(2000);
-    Mockito.verify(cbs[0], Mockito.never()).becomeActive();
-    Mockito.verify(cbs[1], Mockito.never()).becomeActive();
+    verify(cbs[0], never()).becomeActive();
+    verify(cbs[1], never()).becomeActive();
     checkFatalsAndReset();
   }
 
@@ -262,11 +273,12 @@ public void testDontJoinElectionOnDisconnectAndReconnect() throws Exception {
    * Test to verify that proper ZooKeeper ACLs can be updated on
    * ActiveStandbyElector's parent znode.
    */
-  @Test(timeout = 15000)
+  @Test
+  @Timeout(value = 15)
   public void testSetZooKeeperACLsOnParentZnodeName()
       throws Exception {
     ActiveStandbyElectorCallback cb =
-        Mockito.mock(ActiveStandbyElectorCallback.class);
+        mock(ActiveStandbyElectorCallback.class);
     ActiveStandbyElector elector =
         new ActiveStandbyElector(hostPort, 5000, PARENT_DIR,
             Ids.READ_ACL_UNSAFE, Collections.<ZKAuthInfo>emptyList(), cb,
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java
index d9070238017..c85112ba2b2 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverController.java
@@ -17,12 +17,19 @@
  */
 package org.apache.hadoop.ha;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.ArgumentMatchers.same;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
 
 import java.net.InetSocketAddress;
 import java.security.NoSuchAlgorithmException;
 
-import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 import org.apache.hadoop.HadoopIllegalArgumentException;
 import org.apache.hadoop.conf.Configuration;
@@ -41,24 +48,18 @@
 import org.apache.zookeeper.ZooKeeper;
 import org.apache.zookeeper.data.Stat;
 import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.Timeout;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.mockito.Mockito;
 import org.slf4j.event.Level;
 
+@Timeout(180)
 public class TestZKFailoverController extends ClientBaseWithFixes {
   private Configuration conf;
   private MiniZKFCCluster cluster;
 
-  /**
-   * Set the timeout for every test
-   */
-  @Rule
-  public Timeout testTimeout = new Timeout(3, TimeUnit.MINUTES);
-
   // Set up ZK digest-based credentials for the purposes of the tests,
   // to make sure all of our functionality works with auth and ACLs
   // present.
@@ -81,7 +82,7 @@ public class TestZKFailoverController extends ClientBaseWithFixes {
     GenericTestUtils.setLogLevel(ActiveStandbyElector.LOG, Level.TRACE);
   }
   
-  @Before
+  @BeforeEach
   public void setupConfAndServices() {
     conf = new Configuration();
     conf.set(ZKFailoverController.ZK_ACL_KEY, TEST_ACL);
@@ -91,7 +92,7 @@ public void setupConfAndServices() {
     this.cluster = new MiniZKFCCluster(conf, getServer(serverFactory));
   }
 
-  @After
+  @AfterEach
   public void teardown() {
     if (cluster != null) {
       try {
@@ -216,8 +217,8 @@ protected String getScopeInsideParentNode() {
   @Test
   public void testWontRunWhenAutoFailoverDisabled() throws Exception {
     DummyHAService svc = cluster.getService(1);
-    svc = Mockito.spy(svc);
-    Mockito.doReturn(false).when(svc).isAutoFailoverEnabled();
+    svc = spy(svc);
+    doReturn(false).when(svc).isAutoFailoverEnabled();
     
     assertEquals(ZKFailoverController.ERR_CODE_AUTO_FAILOVER_NOT_ENABLED,
         runFC(svc, "-formatZK"));
@@ -253,8 +254,8 @@ public void testFormatSetsAcls() throws Exception {
    */
   @Test
   public void testFencingMustBeConfigured() throws Exception {
-    DummyHAService svc = Mockito.spy(cluster.getService(0));
-    Mockito.doThrow(new BadFencingConfigurationException("no fencing"))
+    DummyHAService svc = spy(cluster.getService(0));
+    doThrow(new BadFencingConfigurationException("no fencing"))
         .when(svc).checkFencingConfigured();
     // Format the base dir, should succeed
     assertEquals(0, runFC(svc, "-formatZK"));
@@ -289,7 +290,7 @@ public void testAutoFailoverOnBadHealth() throws Exception {
     // Should fail back to svc0 at this point
     cluster.waitForHAState(0, HAServiceState.ACTIVE);
     // and fence svc1
-    Mockito.verify(svc1.fencer).fence(Mockito.same(svc1));
+    verify(svc1.fencer).fence(same(svc1));
   }
 
   /**
@@ -394,7 +395,7 @@ public void testBecomingActiveFails() throws Exception {
     cluster.waitForActiveLockHolder(null);
 
 
-    Mockito.verify(svc1.proxy, Mockito.timeout(2000).atLeastOnce())
+    verify(svc1.proxy, timeout(2000).atLeastOnce())
       .transitionToActive(Mockito.<StateChangeRequestInfo>any());
 
     cluster.waitForHAState(0, HAServiceState.INITIALIZING);
@@ -476,8 +477,8 @@ public void testCedeActive() throws Exception {
     long st = Time.now();
     proxy.cedeActive(3000);
     long et = Time.now();
-    assertTrue("RPC to cedeActive took " + (et - st) + " ms",
-        et - st < 1000);
+    assertTrue(et - st < 1000,
+        "RPC to cedeActive took " + (et - st) + " ms");
 
     // Should be in "INIT" state since it's not in the election
     // at this point.
@@ -488,9 +489,9 @@ public void testCedeActive() throws Exception {
     // since the other node in the cluster would have taken ACTIVE.
     cluster.waitForElectorState(0, ActiveStandbyElector.State.STANDBY);
     long et2 = Time.now();
-    assertTrue("Should take ~3 seconds to rejoin. Only took " + (et2 - et) +
-        "ms before rejoining.",
-        et2 - et > 2800);
+    assertTrue(et2 - et > 2800,
+        "Should take ~3 seconds to rejoin. Only took " + (et2 - et) +
+        "ms before rejoining.");
   }
 
   @Test
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverControllerStress.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverControllerStress.java
index 1fd339bfc35..0e2e3e06cec 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverControllerStress.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ha/TestZKFailoverControllerStress.java
@@ -24,9 +24,10 @@
 import org.apache.hadoop.fs.CommonConfigurationKeys;
 import org.apache.hadoop.util.Time;
 import org.apache.zookeeper.server.ServerCnxn;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
@@ -45,14 +46,14 @@ public class TestZKFailoverControllerStress extends ClientBaseWithFixes {
   private Configuration conf;
   private MiniZKFCCluster cluster;
 
-  @Before
+  @BeforeEach
   public void setupConfAndServices() throws Exception {
     conf = new Configuration();
     conf.set(ZKFailoverController.ZK_QUORUM_KEY, hostPort);
     this.cluster = new MiniZKFCCluster(conf, getServer(serverFactory));
   }
   
-  @After
+  @AfterEach
   public void stopCluster() throws Exception {
     if (cluster != null) {
       cluster.stop();
@@ -63,7 +64,8 @@ public void stopCluster() throws Exception {
    * Simply fail back and forth between two services for the
    * configured amount of time, via expiring their ZK sessions.
    */
-  @Test(timeout=(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS) * 1000)
+  @Test
+  @Timeout(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS)
   public void testExpireBackAndForth() throws Exception {
     cluster.start();
     long st = Time.now();
@@ -89,7 +91,8 @@ public void testExpireBackAndForth() throws Exception {
    * we just do random expirations and expect neither one to ever
    * generate fatal exceptions.
    */
-  @Test(timeout=(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS) * 1000)
+  @Test
+  @Timeout(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS)
   public void testRandomExpirations() throws Exception {
     cluster.start();
     long st = Time.now();
@@ -116,7 +119,8 @@ public void testRandomExpirations() throws Exception {
    * cluster. Meanwhile, causes ZK to disconnect clients every
    * 50ms, to trigger the retry code and failures to become active.
    */
-  @Test(timeout=(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS) * 1000)
+  @Test
+  @Timeout(STRESS_RUNTIME_SECS + EXTRA_TIMEOUT_SECS)
   public void testRandomHealthAndDisconnects() throws Exception {
     long runFor = STRESS_RUNTIME_SECS * 1000;
     Mockito.doAnswer(new RandomlyThrow(0))
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/MetricsRecords.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/MetricsRecords.java
index 786571441fd..3f87cb147c0 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/MetricsRecords.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/impl/MetricsRecords.java
@@ -24,8 +24,8 @@
 import org.apache.hadoop.metrics2.MetricsRecord;
 import org.apache.hadoop.metrics2.MetricsTag;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 /**
  * Utility class mainly for tests
@@ -61,8 +61,8 @@ public static void assertMetricNotNull(MetricsRecord record,
       String metricName) {
     AbstractMetric resourceLimitMetric = getFirstMetricByName(
         record, metricName);
-    assertNotNull("Metric " + metricName + " doesn't exist",
-        resourceLimitMetric);
+    assertNotNull(resourceLimitMetric,
+        "Metric " + metricName + " doesn't exist");
   }
 
   private static MetricsTag getFirstTagByName(MetricsRecord record,
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/RollingFileSystemSinkTestBase.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/RollingFileSystemSinkTestBase.java
index 0f90d82f53c..fdf087a44c9 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/RollingFileSystemSinkTestBase.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/RollingFileSystemSinkTestBase.java
@@ -54,12 +54,12 @@
 import org.apache.hadoop.metrics2.lib.MutableGaugeInt;
 import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
 import org.apache.hadoop.test.GenericTestUtils;
-import org.junit.AfterClass;
-import org.junit.Rule;
-import org.junit.rules.TestName;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import static org.junit.Assert.assertTrue;
+import org.apache.hadoop.test.TestName;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.RegisterExtension;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * This class is a base class for testing the {@link RollingFileSystemSink}
@@ -78,8 +78,8 @@ public class RollingFileSystemSinkTestBase {
   /**
    * The name of the current test method.
    */
-  @Rule
-  public TestName methodName = new TestName();
+  @RegisterExtension
+  private TestName methodName = new TestName();
 
   /**
    * A sample metric class
@@ -119,7 +119,7 @@ public MyMetrics2 registerWith(MetricsSystem ms) {
   /**
    * Set the date format's timezone to GMT.
    */
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
     FileUtil.fullyDelete(ROOT_TEST_DIR);
@@ -129,7 +129,7 @@ public static void setup() {
    * Delete the test directory for this test.
    * @throws IOException thrown if the delete fails
    */
-  @AfterClass
+  @AfterAll
   public static void deleteBaseDir() throws IOException {
     FileUtil.fullyDelete(ROOT_TEST_DIR);
   }
@@ -138,12 +138,11 @@ public static void deleteBaseDir() throws IOException {
    * Create the test directory for this test.
    * @throws IOException thrown if the create fails
    */
-  @Before
+  @BeforeEach
   public void createMethodDir() throws IOException {
     methodDir = new File(ROOT_TEST_DIR, methodName.getMethodName());
 
-    assertTrue("Test directory already exists: " + methodDir,
-        methodDir.mkdirs());
+    assertTrue(methodDir.mkdirs(), "Test directory already exists: " + methodDir);
   }
 
   /**
@@ -265,7 +264,7 @@ protected String readLogFile(String path, String then, int count)
       }
     }
 
-    assertTrue("No valid log directories found", found);
+    assertTrue(found, "No valid log directories found");
 
     return metrics.toString();
   }
@@ -342,8 +341,9 @@ protected void assertMetricsContents(String contents) {
         + "\\s+testTag22=testTagValue22,\\s+Hostname=.*$[\\n\\r]*",
          Pattern.MULTILINE);
 
-    assertTrue("Sink did not produce the expected output. Actual output was: "
-        + contents, expectedContentPattern.matcher(contents).matches());
+    assertTrue(expectedContentPattern.matcher(contents).matches(),
+        "Sink did not produce the expected output. Actual output was: "
+        + contents);
   }
 
   /**
@@ -366,8 +366,9 @@ protected void assertExtraContents(String contents) {
         + "\\s+testTag22=testTagValue22,\\s+Hostname=.*$[\\n\\r]*",
          Pattern.MULTILINE);
 
-    assertTrue("Sink did not produce the expected output. Actual output was: "
-        + contents, expectedContentPattern.matcher(contents).matches());
+    assertTrue(expectedContentPattern.matcher(contents).matches(),
+        "Sink did not produce the expected output. Actual output was: "
+        + contents);
   }
 
   /**
@@ -500,10 +501,12 @@ public void assertFileCount(FileSystem fs, Path dir, int expected)
       count++;
     }
 
-    assertTrue("The sink created additional unexpected log files. " + count
-        + " files were created", expected >= count);
-    assertTrue("The sink created too few log files. " + count + " files were "
-        + "created", expected <= count);
+    assertTrue(expected >= count,
+        "The sink created additional unexpected log files. " + count
+        + " files were created");
+    assertTrue(expected <= count,
+        "The sink created too few log files. " + count + " files were "
+        + "created");
   }
 
   /**
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestRollingFileSystemSinkWithLocal.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestRollingFileSystemSinkWithLocal.java
index 1a69c8dd882..c9a6db89f9c 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestRollingFileSystemSinkWithLocal.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/metrics2/sink/TestRollingFileSystemSinkWithLocal.java
@@ -21,9 +21,9 @@
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.metrics2.MetricsSystem;
 
-import org.junit.Test;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test the {@link RollingFileSystemSink} class in the context of the local file
@@ -114,9 +114,9 @@ public void testFailedWrite() {
       // publish the metrics
       ms.publishMetricsNow();
 
-      assertTrue("No exception was generated while writing metrics "
-          + "even though the target directory was not writable",
-          MockSink.errored);
+      assertTrue(MockSink.errored,
+          "No exception was generated while writing metrics "
+          + "even though the target directory was not writable");
 
       ms.stop();
       ms.shutdown();
@@ -143,10 +143,10 @@ public void testSilentFailedWrite() {
       // publish the metrics
       ms.publishMetricsNow();
 
-      assertFalse("An exception was generated while writing metrics "
+      assertFalse(MockSink.errored,
+          "An exception was generated while writing metrics "
           + "when the target directory was not writable, even though the "
-          + "sink is set to ignore errors",
-          MockSink.errored);
+          + "sink is set to ignore errors");
 
       ms.stop();
       ms.shutdown();
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
index 1327561cf43..2fb5b6c22eb 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestUserGroupInformation.java
@@ -33,12 +33,11 @@
 import org.apache.hadoop.util.Shell;
 import org.apache.hadoop.util.StringUtils;
 import org.apache.hadoop.util.Time;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.mockito.Mockito;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.slf4j.Logger;
@@ -81,20 +80,21 @@
 import static org.apache.hadoop.test.MetricsAsserts.assertQuantileGauges;
 import static org.apache.hadoop.test.MetricsAsserts.getDoubleGauge;
 import static org.apache.hadoop.test.MetricsAsserts.getMetrics;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNotSame;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNotSame;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 public class TestUserGroupInformation {
@@ -134,7 +134,7 @@ public AppConfigurationEntry[] getAppConfigurationEntry(String name) {
   }
 
   /** configure ugi */
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     javax.security.auth.login.Configuration.setConfiguration(
         new DummyLoginConfiguration());
@@ -145,29 +145,32 @@ public static void setup() {
     System.setProperty("hadoop.home.dir", (home != null ? home : "."));
   }
   
-  @Before
+  @BeforeEach
   public void setupUgi() {
     conf = new Configuration();
     UserGroupInformation.reset();
     UserGroupInformation.setConfiguration(conf);
   }
   
-  @After
+  @AfterEach
   public void resetUgi() {
     UserGroupInformation.setLoginUser(null);
   }
 
-  @Test(timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSimpleLogin() throws IOException {
     tryLoginAuthenticationMethod(AuthenticationMethod.SIMPLE, true);
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testTokenLogin() throws IOException {
     tryLoginAuthenticationMethod(AuthenticationMethod.TOKEN, false);
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testProxyLogin() throws IOException {
     tryLoginAuthenticationMethod(AuthenticationMethod.PROXY, false);
   }
@@ -196,7 +199,8 @@ private void tryLoginAuthenticationMethod(AuthenticationMethod method,
     }
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetRealAuthenticationMethod() {
     UserGroupInformation ugi = UserGroupInformation.createRemoteUser("user1");
     ugi.setAuthenticationMethod(AuthenticationMethod.SIMPLE);
@@ -207,7 +211,8 @@ public void testGetRealAuthenticationMethod() {
     assertEquals(AuthenticationMethod.SIMPLE, ugi.getRealAuthenticationMethod());
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testCreateRemoteUser() {
     UserGroupInformation ugi = UserGroupInformation.createRemoteUser("user1");
     assertEquals(AuthenticationMethod.SIMPLE, ugi.getAuthenticationMethod());
@@ -219,7 +224,8 @@ public void testCreateRemoteUser() {
   }
   
   /** Test login method */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testLogin() throws Exception {
     conf.set(HADOOP_USER_GROUP_METRICS_PERCENTILES_INTERVALS,
       String.valueOf(PERCENTILES_INTERVAL));
@@ -250,7 +256,8 @@ public UserGroupInformation run() throws IOException {
    * given user name - get all the groups.
    * Needs to happen before creating the test users
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetServerSideGroups() throws IOException,
                                                InterruptedException {
     // get the user name
@@ -311,7 +318,8 @@ public Object run() throws IOException {
   }
 
   /** test constructor */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testConstructor() throws Exception {
     // security off, so default should just return simple name
     testConstructorSuccess("user1", "user1");
@@ -325,7 +333,8 @@ public void testConstructor() throws Exception {
   }
   
   /** test constructor */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testConstructorWithRules() throws Exception {
     // security off, but use rules if explicitly set
     conf.set(HADOOP_SECURITY_AUTH_TO_LOCAL,
@@ -357,7 +366,8 @@ public void testConstructorWithRules() throws Exception {
   }
   
   /** test constructor */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testConstructorWithKerberos() throws Exception {
     // security on, default is remove default realm
     conf.set(HADOOP_SECURITY_AUTH_TO_LOCAL_MECHANISM, "hadoop");
@@ -387,7 +397,8 @@ public void testConstructorWithKerberos() throws Exception {
   }
 
   /** test constructor */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testConstructorWithKerberosRules() throws Exception {
     // security on, explicit rules
     SecurityUtil.setAuthenticationMethod(AuthenticationMethod.KERBEROS, conf);
@@ -423,12 +434,13 @@ private void testConstructorFailures(String userName) {
       String expect = (userName == null || userName.isEmpty())
           ? "Null user" : "Illegal principal name "+userName;
       String expect2 = "Malformed Kerberos name: "+userName;
-      assertTrue("Did not find "+ expect + " or " + expect2 + " in " + e,
-          e.toString().contains(expect) || e.toString().contains(expect2));
+      assertTrue(e.toString().contains(expect) || e.toString().contains(expect2),
+          "Did not find "+ expect + " or " + expect2 + " in " + e);
     }
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testSetConfigWithRules() {
     String[] rules = { "RULE:[1:TEST1]", "RULE:[1:TEST2]", "RULE:[1:TEST3]" };
 
@@ -458,7 +470,8 @@ public void testSetConfigWithRules() {
     assertEquals(rules[2], KerberosName.getRules());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testEnsureInitWithRules() throws IOException {
     String rules = "RULE:[1:RULE1]";
 
@@ -477,7 +490,8 @@ public void testEnsureInitWithRules() throws IOException {
     assertEquals(rules, KerberosName.getRules());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testEquals() throws Exception {
     UserGroupInformation uugi = 
       UserGroupInformation.createUserForTesting(USER_NAME, GROUP_NAMES);
@@ -495,7 +509,8 @@ public void testEquals() throws Exception {
     assertEquals(uugi.hashCode(), ugi3.hashCode());
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testEqualsWithRealUser() throws Exception {
     UserGroupInformation realUgi1 = UserGroupInformation.createUserForTesting(
         "RealUser", GROUP_NAMES);
@@ -508,7 +523,8 @@ public void testEqualsWithRealUser() throws Exception {
     assertFalse(remoteUgi.equals(proxyUgi1));
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGettingGroups() throws Exception {
     UserGroupInformation uugi = 
       UserGroupInformation.createUserForTesting(USER_NAME, GROUP_NAMES);
@@ -519,8 +535,8 @@ public void testGettingGroups() throws Exception {
     assertEquals(GROUP1_NAME, uugi.getPrimaryGroupName());
   }
 
-  @SuppressWarnings("unchecked") // from Mockito mocks
-  @Test (timeout = 30000)
+  @SuppressWarnings("unchecked")@Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testAddToken() throws Exception {
     UserGroupInformation ugi = 
         UserGroupInformation.createRemoteUser("someone"); 
@@ -557,8 +573,8 @@ public <T extends TokenIdentifier> void testAddToken() throws Exception {
     checkTokens(ugi, t1, t2, t3);    
   }
 
-  @SuppressWarnings("unchecked") // from Mockito mocks
-  @Test (timeout = 30000)
+  @SuppressWarnings("unchecked")@Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testGetCreds() throws Exception {
     UserGroupInformation ugi = 
         UserGroupInformation.createRemoteUser("someone"); 
@@ -583,8 +599,8 @@ public <T extends TokenIdentifier> void testGetCreds() throws Exception {
     checkTokens(ugi, t1, t2);
   }
 
-  @SuppressWarnings("unchecked") // from Mockito mocks
-  @Test (timeout = 30000)
+  @SuppressWarnings("unchecked")@Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testAddCreds() throws Exception {
     UserGroupInformation ugi = 
         UserGroupInformation.createRemoteUser("someone"); 
@@ -609,7 +625,8 @@ public <T extends TokenIdentifier> void testAddCreds() throws Exception {
     assertSame(secret, ugi.getCredentials().getSecretKey(secretKey));
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testGetCredsNotSame()
       throws Exception {
     UserGroupInformation ugi = 
@@ -636,8 +653,8 @@ private void checkTokens(UserGroupInformation ugi, Token<?> ... tokens) {
     assertEquals(tokens.length, ugiCreds.numberOfTokens());
   }
 
-  @SuppressWarnings("unchecked") // from Mockito mocks
-  @Test (timeout = 30000)
+  @SuppressWarnings("unchecked")@Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testAddNamedToken() throws Exception {
     UserGroupInformation ugi = 
         UserGroupInformation.createRemoteUser("someone"); 
@@ -657,8 +674,8 @@ public <T extends TokenIdentifier> void testAddNamedToken() throws Exception {
     assertSame(t1, ugi.getCredentials().getToken(service2));
   }
 
-  @SuppressWarnings("unchecked") // from Mockito mocks
-  @Test (timeout = 30000)
+  @SuppressWarnings("unchecked")@Test
+  @Timeout(value = 30)
   public <T extends TokenIdentifier> void testUGITokens() throws Exception {
     UserGroupInformation ugi = 
       UserGroupInformation.createUserForTesting("TheDoctor", 
@@ -704,7 +721,8 @@ public Collection<Token<?>> run() throws IOException {
     assertTrue(otherSet.contains(t2));
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testTokenIdentifiers() throws Exception {
     UserGroupInformation ugi = UserGroupInformation.createUserForTesting(
         "TheDoctor", new String[] { "TheTARDIS" });
@@ -732,7 +750,8 @@ public Collection<TokenIdentifier> run() throws IOException {
     assertEquals(2, otherSet.size());
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testTestAuthMethod() throws Exception {
     UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
     // verify the reverse mappings works
@@ -744,40 +763,42 @@ public void testTestAuthMethod() throws Exception {
     }
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUGIAuthMethod() throws Exception {
     final UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
     final AuthenticationMethod am = AuthenticationMethod.KERBEROS;
     ugi.setAuthenticationMethod(am);
-    Assert.assertEquals(am, ugi.getAuthenticationMethod());
+    assertEquals(am, ugi.getAuthenticationMethod());
     ugi.doAs(new PrivilegedExceptionAction<Object>() {
       @Override
       public Object run() throws IOException {
-        Assert.assertEquals(am, UserGroupInformation.getCurrentUser()
+        assertEquals(am, UserGroupInformation.getCurrentUser()
             .getAuthenticationMethod());
         return null;
       }
     });
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUGIAuthMethodInRealUser() throws Exception {
     final UserGroupInformation ugi = UserGroupInformation.getCurrentUser();
     UserGroupInformation proxyUgi = UserGroupInformation.createProxyUser(
         "proxy", ugi);
     final AuthenticationMethod am = AuthenticationMethod.KERBEROS;
     ugi.setAuthenticationMethod(am);
-    Assert.assertEquals(am, ugi.getAuthenticationMethod());
-    Assert.assertEquals(AuthenticationMethod.PROXY,
+    assertEquals(am, ugi.getAuthenticationMethod());
+    assertEquals(AuthenticationMethod.PROXY,
                         proxyUgi.getAuthenticationMethod());
-    Assert.assertEquals(am, UserGroupInformation
+    assertEquals(am, UserGroupInformation
         .getRealAuthenticationMethod(proxyUgi));
     proxyUgi.doAs(new PrivilegedExceptionAction<Object>() {
       @Override
       public Object run() throws IOException {
-        Assert.assertEquals(AuthenticationMethod.PROXY, UserGroupInformation
+        assertEquals(AuthenticationMethod.PROXY, UserGroupInformation
             .getCurrentUser().getAuthenticationMethod());
-        Assert.assertEquals(am, UserGroupInformation.getCurrentUser()
+        assertEquals(am, UserGroupInformation.getCurrentUser()
             .getRealUser().getAuthenticationMethod());
         return null;
       }
@@ -785,17 +806,18 @@ public Object run() throws IOException {
     UserGroupInformation proxyUgi2 = 
       new UserGroupInformation(proxyUgi.getSubject());
     proxyUgi2.setAuthenticationMethod(AuthenticationMethod.PROXY);
-    Assert.assertEquals(proxyUgi, proxyUgi2);
+    assertEquals(proxyUgi, proxyUgi2);
     // Equality should work if authMethod is null
     UserGroupInformation realugi = UserGroupInformation.getCurrentUser();
     UserGroupInformation proxyUgi3 = UserGroupInformation.createProxyUser(
         "proxyAnother", realugi);
     UserGroupInformation proxyUgi4 = 
       new UserGroupInformation(proxyUgi3.getSubject());
-    Assert.assertEquals(proxyUgi3, proxyUgi4);
+    assertEquals(proxyUgi3, proxyUgi4);
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testLoginObjectInSubject() throws Exception {
     UserGroupInformation loginUgi = UserGroupInformation.getLoginUser();
     UserGroupInformation anotherUgi = new UserGroupInformation(loginUgi
@@ -805,10 +827,11 @@ public void testLoginObjectInSubject() throws Exception {
     LoginContext login2 = anotherUgi.getSubject().getPrincipals(User.class)
     .iterator().next().getLogin();
     //login1 and login2 must be same instances
-    Assert.assertTrue(login1 == login2);
+    assertTrue(login1 == login2);
   }
   
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testLoginModuleCommit() throws Exception {
     UserGroupInformation loginUgi = UserGroupInformation.getLoginUser();
     User user1 = loginUgi.getSubject().getPrincipals(User.class).iterator()
@@ -819,7 +842,7 @@ public void testLoginModuleCommit() throws Exception {
     User user2 = loginUgi.getSubject().getPrincipals(User.class).iterator()
         .next();
     // user1 and user2 must be same instances.
-    Assert.assertTrue(user1 == user2);
+    assertTrue(user1 == user2);
   }
   
   public static void verifyLoginMetrics(long success, int failure)
@@ -857,7 +880,8 @@ private static void verifyGroupMetrics(
    * with it, but that Subject was not created by Hadoop (ie it has no
    * associated User principal)
    */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testUGIUnderNonHadoopContext() throws Exception {
     Subject nonHadoopSubject = new Subject();
     Subject.doAs(nonHadoopSubject, new PrivilegedExceptionAction<Void>() {
@@ -870,7 +894,8 @@ public Void run() throws IOException {
       });
   }
 
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testGetUGIFromSubject() throws Exception {
     KerberosPrincipal p = new KerberosPrincipal("guest");
     Subject subject = new Subject();
@@ -881,7 +906,8 @@ public void testGetUGIFromSubject() throws Exception {
   }
 
   /** Test hasSufficientTimeElapsed method */
-  @Test (timeout = 30000)
+  @Test
+  @Timeout(value = 30)
   public void testHasSufficientTimeElapsed() throws Exception {
     // Make hasSufficientTimeElapsed public
     Method method = UserGroupInformation.class
@@ -915,7 +941,8 @@ public void testHasSufficientTimeElapsed() throws Exception {
     method.setAccessible(false);
   }
   
-  @Test(timeout=10000)
+  @Test
+  @Timeout(value = 10)
   public void testSetLoginUser() throws IOException {
     UserGroupInformation ugi = UserGroupInformation.createRemoteUser("test-user");
     UserGroupInformation.setLoginUser(ugi);
@@ -982,8 +1009,8 @@ public Void run() throws Exception {
             Token<? extends TokenIdentifier> t = mock(Token.class);
             when(t.getService()).thenReturn(new Text("t" + i));
             UserGroupInformation.getCurrentUser().addToken(t);
-            assertNull("ConcurrentModificationException encountered",
-                thread.cme);
+            assertNull(thread.cme,
+                "ConcurrentModificationException encountered");
           }
         } catch (ConcurrentModificationException cme) {
           cme.printStackTrace();
@@ -1139,7 +1166,7 @@ public void testGetNextRetryTime() throws Exception {
     String str =
         "5th retry, now:" + currentTime + ", retry:" + lastRetry;
     LOG.info(str);
-    assertEquals(str, endTime - reloginIntervalMs, lastRetry);
+    assertEquals(endTime - reloginIntervalMs, lastRetry, str);
 
     // make sure no more retries after (tgt endTime - login interval).
     UserGroupInformation.metrics.getRenewalFailures().incr();
@@ -1147,7 +1174,7 @@ public void testGetNextRetryTime() throws Exception {
         UserGroupInformation.getNextTgtRenewalTime(endTime, currentTime, rp);
     str = "overflow retry, now:" + currentTime + ", retry:" + lastRetry;
     LOG.info(str);
-    assertEquals(str, endTime - reloginIntervalMs, lastRetry);
+    assertEquals(endTime - reloginIntervalMs, lastRetry, str);
   }
 
   private void assertWithinBounds(final int numFailures, final long lastRetry,
@@ -1160,12 +1187,13 @@ private void assertWithinBounds(final int numFailures, final long lastRetry,
         + ", lower bound:" + lower + ", upper bound:" + upper
         + ", retry:" + lastRetry);
     LOG.info(str);
-    assertTrue(str, lower <= lastRetry && lastRetry < upper);
+    assertTrue(lower <= lastRetry && lastRetry < upper, str);
   }
 
   // verify that getCurrentUser on the same and different subjects can be
   // concurrent.  Ie. no synchronization.
-  @Test(timeout=8000)
+  @Test
+  @Timeout(value = 8)
   public void testConcurrentGetCurrentUser() throws Exception {
     final CyclicBarrier barrier = new CyclicBarrier(2);
     final CountDownLatch latch = new CountDownLatch(1);
@@ -1181,7 +1209,7 @@ public void testConcurrentGetCurrentUser() throws Exception {
     Set<Principal> principals = testUgi1.getSubject().getPrincipals();
     User user =
         testUgi1.getSubject().getPrincipals(User.class).iterator().next();
-    final User spyUser = Mockito.spy(user);
+    final User spyUser = spy(user);
     principals.remove(user);
     principals.add(spyUser);
     when(spyUser.getName()).thenAnswer(new Answer<String>(){
@@ -1269,7 +1297,7 @@ ugi.new TicketCacheRenewalRunnable(tgt,
     // there should be no exception when calling this
     userCredsRunnable.run();
     // isDestroyed should be called at least once
-    Mockito.verify(tgt, atLeastOnce()).isDestroyed();
+    verify(tgt, atLeastOnce()).isDestroyed();
   }
 
   @Test
@@ -1306,8 +1334,8 @@ public void testImportTokensFromConfig() throws IOException {
     // Check if the tokens were loaded
     UserGroupInformation ugi = UserGroupInformation.getLoginUser();
     Credentials outCred = ugi.getCredentials();
-    assertEquals("Tokens: " + outCred.getAllTokens(),
-        2, outCred.getAllTokens().size());
+    assertEquals(2, outCred.getAllTokens().size(),
+        "Tokens: " + outCred.getAllTokens());
     boolean found0 = false;
     boolean found1 = false;
     for (Token<? extends TokenIdentifier> token : outCred.getAllTokens()) {
@@ -1321,10 +1349,10 @@ public void testImportTokensFromConfig() throws IOException {
         found1 = true;
       }
     }
-    assertTrue("Expected token testTokenService0 not found: " + outCred,
-        found0);
-    assertTrue("Expected token testTokenService1 not found: " + outCred,
-        found1);
+    assertTrue(found0,
+        "Expected token testTokenService0 not found: " + outCred);
+    assertTrue(found1,
+        "Expected token testTokenService1 not found: " + outCred);
 
     // Try to add the same token through configuration and file
     Credentials cred1 = new Credentials();
@@ -1336,8 +1364,8 @@ public void testImportTokensFromConfig() throws IOException {
 
     UserGroupInformation ugi1 = UserGroupInformation.getLoginUser();
     Credentials outCred1 = ugi1.getCredentials();
-    assertEquals("Tokens: " + outCred1.getAllTokens(),
-        1, outCred1.getAllTokens().size());
+    assertEquals(1, outCred1.getAllTokens().size(),
+        "Tokens: " + outCred1.getAllTokens());
   }
 
   @Test
@@ -1356,8 +1384,8 @@ public void testImportTokensFromProperty() throws IOException {
     UserGroupInformation.reset();
     UserGroupInformation ugi = UserGroupInformation.getLoginUser();
     Credentials creds = ugi.getCredentials();
-    assertEquals("Tokens: " + creds.getAllTokens(),
-        1, creds.getAllTokens().size());
+    assertEquals(1, creds.getAllTokens().size(),
+        "Tokens: " + creds.getAllTokens());
     assertArrayEquals(creds.getToken(service).getIdentifier(), identity);
 
     // Cleanup
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestZKDelegationTokenSecretManager.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestZKDelegationTokenSecretManager.java
index 25dae7e4fd5..58c3f541018 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestZKDelegationTokenSecretManager.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/TestZKDelegationTokenSecretManager.java
@@ -18,6 +18,12 @@
 
 package org.apache.hadoop.security.token.delegation;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -53,18 +59,18 @@
 import org.apache.zookeeper.data.Id;
 import org.apache.zookeeper.data.Stat;
 import org.apache.zookeeper.server.auth.DigestAuthenticationProvider;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.Timeout;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.Timeout;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.junit.Assert.fail;
-
-
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+@Timeout(300)
 public class TestZKDelegationTokenSecretManager {
   private static final Logger LOG =
       LoggerFactory.getLogger(TestZKDelegationTokenSecretManager.class);
@@ -79,16 +85,13 @@ public class TestZKDelegationTokenSecretManager {
 
   protected TestingServer zkServer;
 
-  @Rule
-  public Timeout globalTimeout = new Timeout(300000, TimeUnit.MILLISECONDS);
-
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     zkServer = new TestingServer();
     zkServer.start();
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     if (zkServer != null) {
       zkServer.close();
@@ -111,11 +114,13 @@ protected Configuration getSecretConf(String connectString) {
 
   @SuppressWarnings("unchecked")
   @Test
+  @Order(1)
   public void testMultiNodeOperations() throws Exception {
       testMultiNodeOperationsImpl(false);
   }
 
   @Test
+  @Order(2)
   public void testMultiNodeOperationsWithZeroRetry() throws Exception {
       testMultiNodeOperationsImpl(true);
   }
@@ -136,7 +141,7 @@ public void testMultiNodeOperationsImpl(boolean setZeroRetry) throws Exception {
       Token<DelegationTokenIdentifier> token =
           (Token<DelegationTokenIdentifier>) tm1.createToken(
               UserGroupInformation.getCurrentUser(), "foo");
-      Assert.assertNotNull(token);
+      assertNotNull(token);
       tm2.verifyToken(token);
       tm2.renewToken(token, "foo");
       tm1.verifyToken(token);
@@ -150,7 +155,7 @@ public void testMultiNodeOperationsImpl(boolean setZeroRetry) throws Exception {
 
       token = (Token<DelegationTokenIdentifier>) tm2.createToken(
           UserGroupInformation.getCurrentUser(), "bar");
-      Assert.assertNotNull(token);
+      assertNotNull(token);
       tm1.verifyToken(token);
       tm1.renewToken(token, "bar");
       tm2.verifyToken(token);
@@ -168,6 +173,7 @@ public void testMultiNodeOperationsImpl(boolean setZeroRetry) throws Exception {
 
   @SuppressWarnings("unchecked")
   @Test
+  @Order(5)
   public void testNodeUpAferAWhile() throws Exception {
     for (int i = 0; i < TEST_RETRIES; i++) {
       String connectString = zkServer.getConnectString();
@@ -177,15 +183,15 @@ public void testNodeUpAferAWhile() throws Exception {
       Token<DelegationTokenIdentifier> token1 =
           (Token<DelegationTokenIdentifier>) tm1.createToken(
               UserGroupInformation.getCurrentUser(), "foo");
-      Assert.assertNotNull(token1);
+      assertNotNull(token1);
       Token<DelegationTokenIdentifier> token2 =
           (Token<DelegationTokenIdentifier>) tm1.createToken(
               UserGroupInformation.getCurrentUser(), "bar");
-      Assert.assertNotNull(token2);
+      assertNotNull(token2);
       Token<DelegationTokenIdentifier> token3 =
           (Token<DelegationTokenIdentifier>) tm1.createToken(
               UserGroupInformation.getCurrentUser(), "boo");
-      Assert.assertNotNull(token3);
+      assertNotNull(token3);
 
       tm1.verifyToken(token1);
       tm1.verifyToken(token2);
@@ -212,7 +218,7 @@ public void testNodeUpAferAWhile() throws Exception {
       Token<DelegationTokenIdentifier> token4 =
           (Token<DelegationTokenIdentifier>) tm2.createToken(
               UserGroupInformation.getCurrentUser(), "xyz");
-      Assert.assertNotNull(token4);
+      assertNotNull(token4);
       tm2.verifyToken(token4);
       tm1.verifyToken(token4);
 
@@ -241,6 +247,7 @@ public void testNodeUpAferAWhile() throws Exception {
 
   @SuppressWarnings("unchecked")
   @Test
+  @Order(6)
   public void testMultiNodeCompeteForSeqNum() throws Exception {
     DelegationTokenManager tm1, tm2 = null;
     String connectString = zkServer.getConnectString();
@@ -253,19 +260,17 @@ public void testMultiNodeCompeteForSeqNum() throws Exception {
     Token<DelegationTokenIdentifier> token1 =
         (Token<DelegationTokenIdentifier>) tm1.createToken(
             UserGroupInformation.getCurrentUser(), "foo");
-    Assert.assertNotNull(token1);
+    assertNotNull(token1);
     AbstractDelegationTokenIdentifier id1 =
         tm1.getDelegationTokenSecretManager().decodeTokenIdentifier(token1);
-    Assert.assertEquals(
-        "Token seq should be the same", 1, id1.getSequenceNumber());
+    assertEquals(1, id1.getSequenceNumber(), "Token seq should be the same");
     Token<DelegationTokenIdentifier> token2 =
         (Token<DelegationTokenIdentifier>) tm1.createToken(
             UserGroupInformation.getCurrentUser(), "foo");
-    Assert.assertNotNull(token2);
+    assertNotNull(token2);
     AbstractDelegationTokenIdentifier id2 =
         tm1.getDelegationTokenSecretManager().decodeTokenIdentifier(token2);
-    Assert.assertEquals(
-        "Token seq should be the same", 2, id2.getSequenceNumber());
+    assertEquals(2, id2.getSequenceNumber(), "Token seq should be the same");
 
     tm2 = new DelegationTokenManager(conf, new Text("bla"));
     tm2.init();
@@ -273,19 +278,17 @@ public void testMultiNodeCompeteForSeqNum() throws Exception {
     Token<DelegationTokenIdentifier> token3 =
         (Token<DelegationTokenIdentifier>) tm2.createToken(
             UserGroupInformation.getCurrentUser(), "foo");
-    Assert.assertNotNull(token3);
+    assertNotNull(token3);
     AbstractDelegationTokenIdentifier id3 =
         tm2.getDelegationTokenSecretManager().decodeTokenIdentifier(token3);
-    Assert.assertEquals(
-        "Token seq should be the same", 1001, id3.getSequenceNumber());
+    assertEquals(1001, id3.getSequenceNumber(), "Token seq should be the same");
     Token<DelegationTokenIdentifier> token4 =
         (Token<DelegationTokenIdentifier>) tm2.createToken(
             UserGroupInformation.getCurrentUser(), "foo");
-    Assert.assertNotNull(token4);
+    assertNotNull(token4);
     AbstractDelegationTokenIdentifier id4 =
         tm2.getDelegationTokenSecretManager().decodeTokenIdentifier(token4);
-    Assert.assertEquals(
-        "Token seq should be the same", 1002, id4.getSequenceNumber());
+    assertEquals(1002, id4.getSequenceNumber(), "Token seq should be the same");
 
     verifyDestroy(tm1, conf);
     verifyDestroy(tm2, conf);
@@ -293,6 +296,7 @@ public void testMultiNodeCompeteForSeqNum() throws Exception {
 
   @SuppressWarnings("unchecked")
   @Test
+  @Order(3)
   public void testRenewTokenSingleManager() throws Exception {
     for (int i = 0; i < TEST_RETRIES; i++) {
       DelegationTokenManager tm1 = null;
@@ -304,7 +308,7 @@ public void testRenewTokenSingleManager() throws Exception {
       Token<DelegationTokenIdentifier> token =
           (Token<DelegationTokenIdentifier>)
           tm1.createToken(UserGroupInformation.getCurrentUser(), "foo");
-      Assert.assertNotNull(token);
+      assertNotNull(token);
       tm1.renewToken(token, "foo");
       tm1.verifyToken(token);
       verifyDestroy(tm1, conf);
@@ -313,6 +317,7 @@ public void testRenewTokenSingleManager() throws Exception {
 
   @SuppressWarnings("unchecked")
   @Test
+  @Order(9)
   public void testCancelTokenSingleManager() throws Exception {
     for (int i = 0; i < TEST_RETRIES; i++) {
       DelegationTokenManager tm1 = null;
@@ -324,7 +329,7 @@ public void testCancelTokenSingleManager() throws Exception {
       Token<DelegationTokenIdentifier> token =
           (Token<DelegationTokenIdentifier>)
           tm1.createToken(UserGroupInformation.getCurrentUser(), "foo");
-      Assert.assertNotNull(token);
+      assertNotNull(token);
       tm1.cancelToken(token, "foo");
       try {
         verifyTokenFail(tm1, token);
@@ -350,6 +355,7 @@ protected void verifyDestroy(DelegationTokenManager tm, Configuration conf)
 
   @SuppressWarnings({ "unchecked", "rawtypes" })
   @Test
+  @Order(7)
   public void testStopThreads() throws Exception {
     DelegationTokenManager tm1 = null;
     String connectString = zkServer.getConnectString();
@@ -371,7 +377,7 @@ public void testStopThreads() throws Exception {
     Token<DelegationTokenIdentifier> token =
       (Token<DelegationTokenIdentifier>)
     tm1.createToken(UserGroupInformation.getCurrentUser(), "foo");
-    Assert.assertNotNull(token);
+    assertNotNull(token);
     tm1.destroy();
   }
 
@@ -420,8 +426,8 @@ public List<ACL> getDefaultAcl() {
   private void verifyACL(CuratorFramework curatorFramework,
       String path, ACL expectedACL) throws Exception {
     List<ACL> acls = curatorFramework.getACL().forPath(path);
-    Assert.assertEquals(1, acls.size());
-    Assert.assertEquals(expectedACL, acls.get(0));
+    assertEquals(1, acls.size());
+    assertEquals(expectedACL, acls.get(0));
   }
 
   // Since it is possible that there can be a delay for the cancel token message
@@ -452,6 +458,7 @@ private void verifyTokenFailWithRetry(DelegationTokenManager tm,
 
   @SuppressWarnings({ "unchecked" })
   @Test
+  @Order(8)
   public void testNodesLoadedAfterRestart() throws Exception {
     final String connectString = zkServer.getConnectString();
     final Configuration conf = getSecretConf(connectString);
@@ -470,11 +477,11 @@ public void testNodesLoadedAfterRestart() throws Exception {
     Token<DelegationTokenIdentifier> token =
         (Token<DelegationTokenIdentifier>) tm
             .createToken(UserGroupInformation.getCurrentUser(), "good");
-    Assert.assertNotNull(token);
+    assertNotNull(token);
     Token<DelegationTokenIdentifier> cancelled =
         (Token<DelegationTokenIdentifier>) tm
             .createToken(UserGroupInformation.getCurrentUser(), "cancelled");
-    Assert.assertNotNull(cancelled);
+    assertNotNull(cancelled);
     tm.verifyToken(token);
     tm.verifyToken(cancelled);
 
@@ -511,12 +518,12 @@ public Boolean get() {
         smNew.decodeTokenIdentifier(cancelled);
     AbstractDelegationTokenSecretManager.DelegationTokenInformation dtinfo =
         zksmNew.getTokenInfo(id);
-    Assert.assertNull("canceled dt should be gone!", dtinfo);
+    assertNull(dtinfo, "canceled dt should be gone!");
 
     // The good token should be loaded on startup, and removed after expiry.
     id = smNew.decodeTokenIdentifier(token);
     dtinfo = zksmNew.getTokenInfoFromMemory(id);
-    Assert.assertNotNull("good dt should be in memory!", dtinfo);
+    assertNotNull(dtinfo, "good dt should be in memory!");
 
     // Wait for the good token to expire.
     Thread.sleep(5000);
@@ -556,13 +563,14 @@ public void testCreatingParentContainersIfNeeded() throws Exception {
 
     // Check if the created NameSpace exists.
     Stat stat = curatorFramework.checkExists().forPath(workingPath);
-    Assert.assertNotNull(stat);
+    assertNotNull(stat);
 
     tm1.destroy();
     curatorFramework.close();
   }
 
   @Test
+  @Order(4)
   public void testCreateNameSpaceRepeatedly() throws Exception {
 
     String connectString = zkServer.getConnectString();
@@ -584,7 +592,7 @@ public void testCreateNameSpaceRepeatedly() throws Exception {
 
     // Check if the created NameSpace exists.
     Stat stat = curatorFramework.checkExists().forPath(workingPath);
-    Assert.assertNotNull(stat);
+    assertNotNull(stat);
 
     // Repeated creation will throw NodeExists exception
     LambdaTestUtils.intercept(KeeperException.class,
@@ -624,10 +632,10 @@ public void testMultipleInit() throws Exception {
     List<Future<Boolean>> futures = executorService.invokeAll(
         Arrays.asList(tm1Callable, tm2Callable));
     for(Future<Boolean> future : futures) {
-      Assert.assertTrue(future.get());
+      assertTrue(future.get());
     }
     executorService.shutdownNow();
-    Assert.assertTrue(executorService.awaitTermination(1, TimeUnit.SECONDS));
+    assertTrue(executorService.awaitTermination(1, TimeUnit.SECONDS));
     tm1.destroy();
     tm2.destroy();
 
@@ -636,7 +644,7 @@ public void testMultipleInit() throws Exception {
 
     // Check if the created NameSpace exists.
     Stat stat = curatorFramework.checkExists().forPath(workingPath);
-    Assert.assertNotNull(stat);
+    assertNotNull(stat);
 
     curatorFramework.close();
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/web/TestDelegationTokenAuthenticationHandlerWithMocks.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/web/TestDelegationTokenAuthenticationHandlerWithMocks.java
index bc140fa7b10..0f5991af065 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/web/TestDelegationTokenAuthenticationHandlerWithMocks.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/token/delegation/web/TestDelegationTokenAuthenticationHandlerWithMocks.java
@@ -18,6 +18,18 @@
 package org.apache.hadoop.security.token.delegation.web;
 
 import static org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticator.DelegationTokenOperation.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.Mockito.contains;
+import static org.mockito.Mockito.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.startsWith;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
@@ -30,13 +42,10 @@
 import org.apache.hadoop.security.authentication.server.AuthenticationToken;
 import org.apache.hadoop.security.token.SecretManager;
 import org.apache.hadoop.security.token.Token;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.Timeout;
-import org.mockito.Mockito;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
 
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
@@ -47,8 +56,8 @@
 import java.io.StringWriter;
 import java.util.Map;
 import java.util.Properties;
-import java.util.concurrent.TimeUnit;
 
+@Timeout(120)
 public class TestDelegationTokenAuthenticationHandlerWithMocks {
 
   public static class MockDelegationTokenAuthenticationHandler
@@ -93,10 +102,7 @@ public AuthenticationToken authenticate(HttpServletRequest request,
 
   private DelegationTokenAuthenticationHandler handler;
 
-  @Rule
-  public Timeout testTimeout = new Timeout(120000, TimeUnit.MILLISECONDS);
-
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     Properties conf = new Properties();
 
@@ -105,7 +111,7 @@ public void setUp() throws Exception {
     handler.initTokenManager(conf);
   }
 
-  @After
+  @AfterEach
   public void cleanUp() {
       handler.destroy();
   }
@@ -130,40 +136,40 @@ public void testManagementOperations() throws Exception {
   }
 
   private void testNonManagementOperation() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    Mockito.when(request.getParameter(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    when(request.getParameter(
         DelegationTokenAuthenticator.OP_PARAM)).thenReturn(null);
-    Assert.assertTrue(handler.managementOperation(null, request, null));
-    Mockito.when(request.getParameter(
+    assertTrue(handler.managementOperation(null, request, null));
+    when(request.getParameter(
         DelegationTokenAuthenticator.OP_PARAM)).thenReturn("CREATE");
-    Assert.assertTrue(handler.managementOperation(null, request, null));
+    assertTrue(handler.managementOperation(null, request, null));
   }
 
   private void testManagementOperationErrors() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).thenReturn(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).thenReturn(
         DelegationTokenAuthenticator.OP_PARAM + "=" +
             DelegationTokenAuthenticator.DelegationTokenOperation.
                 GETDELEGATIONTOKEN.toString()
     );
-    Mockito.when(request.getMethod()).thenReturn("FOO");
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).sendError(
-        Mockito.eq(HttpServletResponse.SC_BAD_REQUEST),
-        Mockito.startsWith("Wrong HTTP method"));
-
-    Mockito.reset(response);
-    Mockito.when(request.getMethod()).thenReturn(
+    when(request.getMethod()).thenReturn("FOO");
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).sendError(
+        eq(HttpServletResponse.SC_BAD_REQUEST),
+        startsWith("Wrong HTTP method"));
+
+    reset(response);
+    when(request.getMethod()).thenReturn(
         DelegationTokenAuthenticator.DelegationTokenOperation.
             GETDELEGATIONTOKEN.getHttpMethod()
     );
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).setStatus(
-        Mockito.eq(HttpServletResponse.SC_UNAUTHORIZED));
-    Mockito.verify(response).setHeader(
-        Mockito.eq(KerberosAuthenticator.WWW_AUTHENTICATE),
-        Mockito.eq("mock"));
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).setStatus(
+        eq(HttpServletResponse.SC_UNAUTHORIZED));
+    verify(response).setHeader(
+        eq(KerberosAuthenticator.WWW_AUTHENTICATE),
+        eq("mock"));
   }
 
   private Token<DelegationTokenIdentifier> testGetToken(String renewer,
@@ -171,17 +177,17 @@ private Token<DelegationTokenIdentifier> testGetToken(String renewer,
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             GETDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString());
-    Mockito.when(request.getMethod()).thenReturn(op.getHttpMethod());
+    when(request.getMethod()).thenReturn(op.getHttpMethod());
 
-    AuthenticationToken token = Mockito.mock(AuthenticationToken.class);
-    Mockito.when(token.getUserName()).thenReturn("user");
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(
+    AuthenticationToken token = mock(AuthenticationToken.class);
+    when(token.getUserName()).thenReturn("user");
+    when(response.getWriter()).thenReturn(new PrintWriter(
         new StringWriter()));
-    Assert.assertFalse(handler.managementOperation(token, request, response));
+    assertFalse(handler.managementOperation(token, request, response));
 
     String queryString =
         DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() + "&" +
@@ -190,27 +196,27 @@ private Token<DelegationTokenIdentifier> testGetToken(String renewer,
       queryString += "&" + DelegationTokenAuthenticator.SERVICE_PARAM + "="
           + service;
     }
-    Mockito.when(request.getQueryString()).thenReturn(queryString);
-    Mockito.reset(response);
-    Mockito.reset(token);
-    Mockito.when(token.getUserName()).thenReturn("user");
+    when(request.getQueryString()).thenReturn(queryString);
+    reset(response);
+    reset(token);
+    when(token.getUserName()).thenReturn("user");
     StringWriter writer = new StringWriter();
     PrintWriter pwriter = new PrintWriter(writer);
-    Mockito.when(response.getWriter()).thenReturn(pwriter);
-    Assert.assertFalse(handler.managementOperation(token, request, response));
+    when(response.getWriter()).thenReturn(pwriter);
+    assertFalse(handler.managementOperation(token, request, response));
     if (renewer == null) {
-      Mockito.verify(token).getUserName();
+      verify(token).getUserName();
     } else {
-      Mockito.verify(token).getUserName();
+      verify(token).getUserName();
     }
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_OK);
-    Mockito.verify(response).setContentType(MediaType.APPLICATION_JSON);
+    verify(response).setStatus(HttpServletResponse.SC_OK);
+    verify(response).setContentType(MediaType.APPLICATION_JSON);
     pwriter.close();
     String responseOutput = writer.toString();
     String tokenLabel = DelegationTokenAuthenticator.
         DELEGATION_TOKEN_JSON;
-    Assert.assertTrue(responseOutput.contains(tokenLabel));
-    Assert.assertTrue(responseOutput.contains(
+    assertTrue(responseOutput.contains(tokenLabel));
+    assertTrue(responseOutput.contains(
         DelegationTokenAuthenticator.DELEGATION_TOKEN_URL_STRING_JSON));
     ObjectMapper jsonMapper = new ObjectMapper();
     Map json = jsonMapper.readValue(responseOutput, Map.class);
@@ -221,11 +227,11 @@ private Token<DelegationTokenIdentifier> testGetToken(String renewer,
     Token<DelegationTokenIdentifier> dt = new Token<DelegationTokenIdentifier>();
     dt.decodeFromUrlString(tokenStr);
     handler.getTokenManager().verifyToken(dt);
-    Assert.assertEquals(expectedTokenKind, dt.getKind());
+    assertEquals(expectedTokenKind, dt.getKind());
     if (service != null) {
-      Assert.assertEquals(service, dt.getService().toString());
+      assertEquals(service, dt.getService().toString());
     } else {
-      Assert.assertEquals(0, dt.getService().getLength());
+      assertEquals(0, dt.getService().getLength());
     }
     return dt;
   }
@@ -244,33 +250,33 @@ private void testCancelToken(Token<DelegationTokenIdentifier> token)
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             CANCELDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).thenReturn(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).thenReturn(
         DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString());
-    Mockito.when(request.getMethod()).
+    when(request.getMethod()).
         thenReturn(op.getHttpMethod());
 
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).sendError(
-        Mockito.eq(HttpServletResponse.SC_BAD_REQUEST),
-        Mockito.contains("requires the parameter [token]"));
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).sendError(
+        eq(HttpServletResponse.SC_BAD_REQUEST),
+        contains("requires the parameter [token]"));
 
-    Mockito.reset(response);
-    Mockito.when(request.getQueryString()).thenReturn(
+    reset(response);
+    when(request.getQueryString()).thenReturn(
         DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() + "&" +
             DelegationTokenAuthenticator.TOKEN_PARAM + "=" +
             token.encodeToUrlString()
     );
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_OK);
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).setStatus(HttpServletResponse.SC_OK);
     try {
       handler.getTokenManager().verifyToken(token);
-      Assert.fail();
+      fail();
     } catch (SecretManager.InvalidToken ex) {
       //NOP
     } catch (Throwable ex) {
-      Assert.fail();
+      fail();
     }
   }
 
@@ -288,42 +294,42 @@ private void testRenewToken(Token<DelegationTokenIdentifier> dToken,
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             RENEWDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString());
-    Mockito.when(request.getMethod()).
+    when(request.getMethod()).
         thenReturn(op.getHttpMethod());
 
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).setStatus(
-        Mockito.eq(HttpServletResponse.SC_UNAUTHORIZED));
-    Mockito.verify(response).setHeader(Mockito.eq(
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).setStatus(
+        eq(HttpServletResponse.SC_UNAUTHORIZED));
+    verify(response).setHeader(eq(
             KerberosAuthenticator.WWW_AUTHENTICATE),
-        Mockito.eq("mock")
+        eq("mock")
     );
 
-    Mockito.reset(response);
-    AuthenticationToken token = Mockito.mock(AuthenticationToken.class);
-    Mockito.when(token.getUserName()).thenReturn(testRenewer);
-    Assert.assertFalse(handler.managementOperation(token, request, response));
-    Mockito.verify(response).sendError(
-        Mockito.eq(HttpServletResponse.SC_BAD_REQUEST),
-        Mockito.contains("requires the parameter [token]"));
+    reset(response);
+    AuthenticationToken token = mock(AuthenticationToken.class);
+    when(token.getUserName()).thenReturn(testRenewer);
+    assertFalse(handler.managementOperation(token, request, response));
+    verify(response).sendError(
+        eq(HttpServletResponse.SC_BAD_REQUEST),
+        contains("requires the parameter [token]"));
 
-    Mockito.reset(response);
+    reset(response);
     StringWriter writer = new StringWriter();
     PrintWriter pwriter = new PrintWriter(writer);
-    Mockito.when(response.getWriter()).thenReturn(pwriter);
+    when(response.getWriter()).thenReturn(pwriter);
 
-    Mockito.when(request.getQueryString()).
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() +
             "&" + DelegationTokenAuthenticator.TOKEN_PARAM + "=" +
             dToken.encodeToUrlString());
-    Assert.assertFalse(handler.managementOperation(token, request, response));
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_OK);
+    assertFalse(handler.managementOperation(token, request, response));
+    verify(response).setStatus(HttpServletResponse.SC_OK);
     pwriter.close();
-    Assert.assertTrue(writer.toString().contains("long"));
+    assertTrue(writer.toString().contains("long"));
     handler.getTokenManager().verifyToken(dToken);
   }
 
@@ -337,104 +343,104 @@ public void testAuthenticate() throws Exception {
 
   @SuppressWarnings("unchecked")
   private void testValidDelegationTokenQueryString() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
     Token<DelegationTokenIdentifier> dToken =
         (Token<DelegationTokenIdentifier>) handler.getTokenManager().createToken(
             UserGroupInformation.getCurrentUser(), "user");
-    Mockito.when(request.getQueryString()).thenReturn(
+    when(request.getQueryString()).thenReturn(
         DelegationTokenAuthenticator.DELEGATION_PARAM + "=" +
         dToken.encodeToUrlString());
 
     AuthenticationToken token = handler.authenticate(request, response);
-    Assert.assertEquals(UserGroupInformation.getCurrentUser().
+    assertEquals(UserGroupInformation.getCurrentUser().
             getShortUserName(), token.getUserName());
-    Assert.assertEquals(0, token.getExpires());
-    Assert.assertEquals(handler.getType(),
+    assertEquals(0, token.getExpires());
+    assertEquals(handler.getType(),
         token.getType());
-    Assert.assertTrue(token.isExpired());
+    assertTrue(token.isExpired());
   }
 
   @SuppressWarnings("unchecked")
   private void testValidDelegationTokenHeader() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
     Token<DelegationTokenIdentifier> dToken =
         (Token<DelegationTokenIdentifier>) handler.getTokenManager().createToken(
             UserGroupInformation.getCurrentUser(), "user");
-    Mockito.when(request.getHeader(Mockito.eq(
+    when(request.getHeader(eq(
         DelegationTokenAuthenticator.DELEGATION_TOKEN_HEADER))).thenReturn(
         dToken.encodeToUrlString());
 
     AuthenticationToken token = handler.authenticate(request, response);
-    Assert.assertEquals(UserGroupInformation.getCurrentUser().
+    assertEquals(UserGroupInformation.getCurrentUser().
         getShortUserName(), token.getUserName());
-    Assert.assertEquals(0, token.getExpires());
-    Assert.assertEquals(handler.getType(),
+    assertEquals(0, token.getExpires());
+    assertEquals(handler.getType(),
         token.getType());
-    Assert.assertTrue(token.isExpired());
+    assertTrue(token.isExpired());
   }
 
   private void testInvalidDelegationTokenQueryString() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).thenReturn(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).thenReturn(
         DelegationTokenAuthenticator.DELEGATION_PARAM + "=invalid");
     StringWriter writer = new StringWriter();
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(writer));
-    Assert.assertNull(handler.authenticate(request, response));
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_FORBIDDEN);
-    Assert.assertTrue(writer.toString().contains("AuthenticationException"));
+    when(response.getWriter()).thenReturn(new PrintWriter(writer));
+    assertNull(handler.authenticate(request, response));
+    verify(response).setStatus(HttpServletResponse.SC_FORBIDDEN);
+    assertTrue(writer.toString().contains("AuthenticationException"));
   }
 
   private void testInvalidDelegationTokenHeader() throws Exception {
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getHeader(Mockito.eq(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getHeader(eq(
         DelegationTokenAuthenticator.DELEGATION_TOKEN_HEADER))).thenReturn(
         "invalid");
     StringWriter writer = new StringWriter();
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(writer));
-    Assert.assertNull(handler.authenticate(request, response));
-    Assert.assertTrue(writer.toString().contains("AuthenticationException"));
+    when(response.getWriter()).thenReturn(new PrintWriter(writer));
+    assertNull(handler.authenticate(request, response));
+    assertTrue(writer.toString().contains("AuthenticationException"));
   }
 
   private String getToken() throws Exception {
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             GETDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(request.getQueryString()).
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString());
-    Mockito.when(request.getMethod()).thenReturn(op.getHttpMethod());
+    when(request.getMethod()).thenReturn(op.getHttpMethod());
 
-    AuthenticationToken token = Mockito.mock(AuthenticationToken.class);
-    Mockito.when(token.getUserName()).thenReturn("user");
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(
+    AuthenticationToken token = mock(AuthenticationToken.class);
+    when(token.getUserName()).thenReturn("user");
+    when(response.getWriter()).thenReturn(new PrintWriter(
         new StringWriter()));
-    Assert.assertFalse(handler.managementOperation(token, request, response));
+    assertFalse(handler.managementOperation(token, request, response));
 
-    Mockito.when(request.getQueryString()).
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() +
             "&" + DelegationTokenAuthenticator.RENEWER_PARAM + "=" + null);
 
-    Mockito.reset(response);
-    Mockito.reset(token);
-    Mockito.when(token.getUserName()).thenReturn("user");
+    reset(response);
+    reset(token);
+    when(token.getUserName()).thenReturn("user");
     StringWriter writer = new StringWriter();
     PrintWriter pwriter = new PrintWriter(writer);
-    Mockito.when(response.getWriter()).thenReturn(pwriter);
-    Assert.assertFalse(handler.managementOperation(token, request, response));
-    Mockito.verify(token).getUserName();
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_OK);
-    Mockito.verify(response).setContentType(MediaType.APPLICATION_JSON);
+    when(response.getWriter()).thenReturn(pwriter);
+    assertFalse(handler.managementOperation(token, request, response));
+    verify(token).getUserName();
+    verify(response).setStatus(HttpServletResponse.SC_OK);
+    verify(response).setContentType(MediaType.APPLICATION_JSON);
     pwriter.close();
     String responseOutput = writer.toString();
     String tokenLabel = DelegationTokenAuthenticator.
         DELEGATION_TOKEN_JSON;
-    Assert.assertTrue(responseOutput.contains(tokenLabel));
-    Assert.assertTrue(responseOutput.contains(
+    assertTrue(responseOutput.contains(tokenLabel));
+    assertTrue(responseOutput.contains(
         DelegationTokenAuthenticator.DELEGATION_TOKEN_URL_STRING_JSON));
     ObjectMapper jsonMapper = new ObjectMapper();
     Map json = jsonMapper.readValue(responseOutput, Map.class);
@@ -453,23 +459,23 @@ public void testCannotGetTokenUsingToken() throws Exception {
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             GETDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    Mockito.when(request.getMethod()).thenReturn(op.getHttpMethod());
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    when(request.getMethod()).thenReturn(op.getHttpMethod());
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(response.getWriter()).thenReturn(new PrintWriter(
         new StringWriter()));
     String tokenStr = getToken();
     // Try get a new token using the fetched token, should get 401.
-    Mockito.when(request.getQueryString()).
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() +
             "&" + DelegationTokenAuthenticator.RENEWER_PARAM + "=" + null +
         "&" + DelegationTokenAuthenticator.DELEGATION_PARAM + "=" + tokenStr);
-    Mockito.reset(response);
+    reset(response);
     StringWriter writer = new StringWriter();
     PrintWriter pwriter = new PrintWriter(writer);
-    Mockito.when(response.getWriter()).thenReturn(pwriter);
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+    when(response.getWriter()).thenReturn(pwriter);
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
   }
 
   @Test
@@ -477,23 +483,23 @@ public void testCannotRenewTokenUsingToken() throws Exception {
     DelegationTokenAuthenticator.DelegationTokenOperation op =
         DelegationTokenAuthenticator.DelegationTokenOperation.
             RENEWDELEGATIONTOKEN;
-    HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-    Mockito.when(request.getMethod()).thenReturn(op.getHttpMethod());
-    HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-    Mockito.when(response.getWriter()).thenReturn(new PrintWriter(
+    HttpServletRequest request = mock(HttpServletRequest.class);
+    when(request.getMethod()).thenReturn(op.getHttpMethod());
+    HttpServletResponse response = mock(HttpServletResponse.class);
+    when(response.getWriter()).thenReturn(new PrintWriter(
         new StringWriter()));
     String tokenStr = getToken();
     // Try renew a token using itself, should get 401.
-    Mockito.when(request.getQueryString()).
+    when(request.getQueryString()).
         thenReturn(DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString() +
             "&" + DelegationTokenAuthenticator.TOKEN_PARAM + "=" + tokenStr +
             "&" + DelegationTokenAuthenticator.DELEGATION_PARAM + "=" + tokenStr);
-    Mockito.reset(response);
+    reset(response);
     StringWriter writer = new StringWriter();
     PrintWriter pwriter = new PrintWriter(writer);
-    Mockito.when(response.getWriter()).thenReturn(pwriter);
-    Assert.assertFalse(handler.managementOperation(null, request, response));
-    Mockito.verify(response).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+    when(response.getWriter()).thenReturn(pwriter);
+    assertFalse(handler.managementOperation(null, request, response));
+    verify(response).setStatus(HttpServletResponse.SC_UNAUTHORIZED);
   }
 
   @Test
@@ -510,14 +516,14 @@ public void testWriterNotClosed() throws Exception {
 
       DelegationTokenAuthenticator.DelegationTokenOperation op =
           GETDELEGATIONTOKEN;
-      HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
-      HttpServletResponse response = Mockito.mock(HttpServletResponse.class);
-      Mockito.when(request.getQueryString()).thenReturn(
+      HttpServletRequest request = mock(HttpServletRequest.class);
+      HttpServletResponse response = mock(HttpServletResponse.class);
+      when(request.getQueryString()).thenReturn(
           DelegationTokenAuthenticator.OP_PARAM + "=" + op.toString());
-      Mockito.when(request.getMethod()).thenReturn(op.getHttpMethod());
+      when(request.getMethod()).thenReturn(op.getHttpMethod());
 
-      AuthenticationToken token = Mockito.mock(AuthenticationToken.class);
-      Mockito.when(token.getUserName()).thenReturn("user");
+      AuthenticationToken token = mock(AuthenticationToken.class);
+      when(token.getUserName()).thenReturn("user");
       final MutableBoolean closed = new MutableBoolean();
       PrintWriter printWriterCloseCount = new PrintWriter(new StringWriter()) {
         @Override
@@ -535,8 +541,8 @@ public void write(String str) {
         }
 
       };
-      Mockito.when(response.getWriter()).thenReturn(printWriterCloseCount);
-      Assert.assertFalse(noAuthCloseHandler.managementOperation(token, request,
+      when(response.getWriter()).thenReturn(printWriterCloseCount);
+      assertFalse(noAuthCloseHandler.managementOperation(token, request,
           response));
     } finally {
       noAuthCloseHandler.destroy();
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/ServiceAssert.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/ServiceAssert.java
index 9f7250d1298..cb9964a39a1 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/ServiceAssert.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/ServiceAssert.java
@@ -19,12 +19,12 @@
 package org.apache.hadoop.service;
 
 import org.apache.hadoop.service.Service;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 
 /**
  * A set of assertions about the state of any service
  */
-public class ServiceAssert extends Assert {
+public class ServiceAssert extends Assertions {
 
   public static void assertServiceStateCreated(Service service) {
     assertServiceInState(service, Service.STATE.NOTINITED);
@@ -43,9 +43,9 @@ public static void assertServiceStateStopped(Service service) {
   }
 
   public static void assertServiceInState(Service service, Service.STATE state) {
-    assertNotNull("Null service", service);
-    assertEquals("Service in wrong state: " + service, state,
-                 service.getServiceState());
+    assertNotNull(service, "Null service");
+    assertEquals(state, service.getServiceState(),
+        "Service in wrong state: " + service);
   }
 
   /**
@@ -58,7 +58,7 @@ public static void assertServiceInState(Service service, Service.STATE state) {
   public static void assertStateCount(BreakableService service,
                         Service.STATE state,
                         int expected) {
-    assertNotNull("Null service", service);
+    assertNotNull(service, "Null service");
     int actual = service.getCount(state);
     if (expected != actual) {
       fail("Expected entry count for state [" + state +"] of " + service
@@ -74,7 +74,7 @@ public static void assertStateCount(BreakableService service,
    */
   public static void assertServiceConfigurationContains(Service service,
                                                         String key) {
-    assertNotNull("No option "+ key + " in service configuration",
-                  service.getConfig().get(key));
+    assertNotNull(service.getConfig().get(key),
+        "No option "+ key + " in service configuration");
   }
 }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestGlobalStateChangeListener.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestGlobalStateChangeListener.java
index 7bee2d68c6d..a698d82476e 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestGlobalStateChangeListener.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestGlobalStateChangeListener.java
@@ -23,8 +23,8 @@
 import org.apache.hadoop.service.LoggingStateChangeListener;
 import org.apache.hadoop.service.Service;
 import org.apache.hadoop.service.ServiceStateChangeListener;
-import org.junit.After;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test global state changes. It is critical for all tests to clean up the
@@ -58,7 +58,7 @@ private boolean unregister(ServiceStateChangeListener l) {
   /**
    * After every test case reset the list of global listeners.
    */
-  @After
+  @AfterEach
   public void cleanup() {
     AbstractService.resetGlobalListeners();
   }
@@ -70,7 +70,7 @@ public void cleanup() {
    */
   public void assertListenerState(BreakableStateChangeListener breakable,
                                   Service.STATE state) {
-    assertEquals("Wrong state in " + breakable, state, breakable.getLastState());
+    assertEquals(state, breakable.getLastState(), "Wrong state in " + breakable);
   }
 
   /**
@@ -80,8 +80,8 @@ public void assertListenerState(BreakableStateChangeListener breakable,
    */
   public void assertListenerEventCount(BreakableStateChangeListener breakable,
                                        int count) {
-    assertEquals("Wrong event count in " + breakable, count,
-                 breakable.getEventCount());
+    assertEquals(count, breakable.getEventCount(),
+        "Wrong event count in " + breakable);
   }
 
   /**
@@ -90,7 +90,7 @@ public void assertListenerEventCount(BreakableStateChangeListener breakable,
   @Test
   public void testRegisterListener() {
     register();
-    assertTrue("listener not registered", unregister());
+    assertTrue(unregister(), "listener not registered");
   }
 
   /**
@@ -100,9 +100,9 @@ public void testRegisterListener() {
   public void testRegisterListenerTwice() {
     register();
     register();
-    assertTrue("listener not registered", unregister());
+    assertTrue(unregister(), "listener not registered");
     //there should be no listener to unregister the second time
-    assertFalse("listener double registered", unregister());
+    assertFalse(unregister(), "listener double registered");
   }
 
   /**
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestServiceLifecycle.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestServiceLifecycle.java
index f72e130d750..ccbc0a009fb 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestServiceLifecycle.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/service/TestServiceLifecycle.java
@@ -25,7 +25,7 @@
 import org.apache.hadoop.service.Service;
 import org.apache.hadoop.service.ServiceStateChangeListener;
 import org.apache.hadoop.service.ServiceStateException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -204,10 +204,10 @@ public void testStopFailingInitAndStop() throws Throwable {
     assertEquals(Service.STATE.INITED, svc.getFailureState());
 
     Throwable failureCause = svc.getFailureCause();
-    assertNotNull("Null failure cause in " + svc, failureCause);
+    assertNotNull(failureCause, "Null failure cause in " + svc);
     BreakableService.BrokenLifecycleEvent cause =
       (BreakableService.BrokenLifecycleEvent) failureCause;
-    assertNotNull("null state in " + cause + " raised by " + svc, cause.state);
+    assertNotNull(cause.state, "null state in " + cause + " raised by " + svc);
     assertEquals(Service.STATE.INITED, cause.state);
   }
 
@@ -299,7 +299,7 @@ public synchronized void stateChanged(Service service) {
 
   private void assertEventCount(BreakableStateChangeListener listener,
                                 int expected) {
-    assertEquals(listener.toString(), expected, listener.getEventCount());
+    assertEquals(expected, listener.getEventCount(), listener.toString());
   }
 
   @Test
@@ -343,7 +343,7 @@ public void testListenerWithNotifications() throws Throwable {
     long duration = System.currentTimeMillis() - start;
     assertEquals(Service.STATE.STOPPED, listener.notifyingState);
     assertServiceInState(service, Service.STATE.STOPPED);
-    assertTrue("Duration of " + duration + " too long", duration < 10000);
+    assertTrue(duration < 10000, "Duration of " + duration + " too long");
   }
 
   @Test
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
index e54971e491c..e4271f0407f 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
@@ -64,8 +64,6 @@
 import org.apache.log4j.Logger;
 import org.apache.log4j.PatternLayout;
 import org.apache.log4j.WriterAppender;
-import org.junit.Assert;
-import org.junit.Assume;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
 import org.slf4j.LoggerFactory;
@@ -75,6 +73,12 @@
 import static org.apache.hadoop.fs.contract.ContractTestUtils.createFile;
 import static org.apache.hadoop.util.functional.CommonCallableSupplier.submit;
 import static org.apache.hadoop.util.functional.CommonCallableSupplier.waitForCompletion;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
 
 /**
  * Test provides some very generic helpers which might be used across the tests
@@ -274,7 +278,7 @@ public static String getRandomizedTempPath() {
    * Assert that a given file exists.
    */
   public static void assertExists(File f) {
-    Assert.assertTrue("File " + f + " should exist", f.exists());
+    assertTrue(f.exists(), "File " + f + " should exist");
   }
 
   /**
@@ -293,9 +297,9 @@ public static void assertGlobEquals(File dir, String pattern,
     }
     Set<String> expectedSet = new TreeSet<>(
         Arrays.asList(expectedMatches));
-    Assert.assertEquals("Bad files matching " + pattern + " in " + dir,
-        Joiner.on(",").join(expectedSet),
-        Joiner.on(",").join(found));
+    assertEquals(Joiner.on(",").join(expectedSet),
+        Joiner.on(",").join(found),
+        "Bad files matching " + pattern + " in " + dir);
   }
 
   static final String E_NULL_THROWABLE = "Null Throwable";
@@ -325,7 +329,7 @@ public static void assertExceptionContains(String expectedText, Throwable t) {
   public static void assertExceptionContains(String expectedText,
       Throwable t,
       String message) {
-    Assert.assertNotNull(E_NULL_THROWABLE, t);
+    assertNotNull(t, E_NULL_THROWABLE);
     String msg = t.toString();
     if (msg == null) {
       throw new AssertionError(E_NULL_THROWABLE_STRING, t);
@@ -692,15 +696,15 @@ public Object answer(InvocationOnMock invocation) throws Throwable {
   }
 
   public static void assertDoesNotMatch(String output, String pattern) {
-    Assert.assertFalse("Expected output to match /" + pattern + "/" +
-        " but got:\n" + output,
-        Pattern.compile(pattern).matcher(output).find());
+    assertFalse(Pattern.compile(pattern).matcher(output).find(),
+        "Expected output to match /" + pattern + "/" +
+        " but got:\n" + output);
   }
 
   public static void assertMatches(String output, String pattern) {
-    Assert.assertTrue("Expected output to match /" + pattern + "/" +
-        " but got:\n" + output,
-        Pattern.compile(pattern).matcher(output).find());
+    assertTrue(Pattern.compile(pattern).matcher(output).find(),
+        "Expected output to match /" + pattern + "/" +
+        " but got:\n" + output);
   }
 
   public static void assertValueNear(long expected, long actual, long allowedError) {
@@ -709,8 +713,9 @@ public static void assertValueNear(long expected, long actual, long allowedError
 
   public static void assertValueWithinRange(long expectedMin, long expectedMax,
       long actual) {
-    Assert.assertTrue("Expected " + actual + " to be in range (" + expectedMin + ","
-        + expectedMax + ")", expectedMin <= actual && actual <= expectedMax);
+    assertTrue(expectedMin <= actual && actual <= expectedMax,
+        "Expected " + actual + " to be in range (" + expectedMin + ","
+        + expectedMax + ")");
   }
 
   /**
@@ -741,7 +746,7 @@ public static boolean anyThreadMatching(Pattern pattern) {
   public static void assertNoThreadsMatching(String regex) {
     Pattern pattern = Pattern.compile(regex);
     if (anyThreadMatching(pattern)) {
-      Assert.fail("Leaked thread matches " + regex);
+      fail("Leaked thread matches " + regex);
     }
   }
 
@@ -774,8 +779,8 @@ public static void waitForThreadTermination(String regex,
    * in the definition of native profile in pom.xml.
    */
   public static void assumeInNativeProfile() {
-    Assume.assumeTrue(
-        Boolean.parseBoolean(System.getProperty("runningWithNative", "false")));
+    assumeTrue(Boolean.parseBoolean(
+        System.getProperty("runningWithNative", "false")));
   }
 
   /**
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/LambdaTestUtils.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/LambdaTestUtils.java
index 0c55871cfd7..e0f3c875189 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/LambdaTestUtils.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/LambdaTestUtils.java
@@ -18,7 +18,11 @@
 
 package org.apache.hadoop.test;
 
-import org.junit.Assert;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -699,9 +703,9 @@ private static String robustToString(Object o) {
   public static <T> void assertOptionalEquals(String message,
       T expected,
       Optional<T> actual) {
-    Assert.assertNotNull(message, actual);
-    Assert.assertTrue(message +" -not present", actual.isPresent());
-    Assert.assertEquals(message, expected, actual.get());
+    assertNotNull(actual, message);
+    assertTrue(actual.isPresent(), message +" -not present");
+    assertEquals(expected, actual.get(), message);
   }
 
   /**
@@ -713,9 +717,9 @@ public static <T> void assertOptionalEquals(String message,
    */
   public static <T> void assertOptionalUnset(String message,
       Optional<T> actual) {
-    Assert.assertNotNull(message, actual);
+    assertNotNull(actual, message);
     actual.ifPresent(
-        t -> Assert.fail("Expected empty option, got " + t.toString()));
+        t -> fail("Expected empty option, got " + t.toString()));
   }
 
   /**
@@ -766,7 +770,7 @@ public static void eval(VoidCallable closure) {
   public static<T> T notNull(String message, Callable<T> eval)
       throws Exception {
     T t = eval.call();
-    Assert.assertNotNull(message, t);
+    assertNotNull(t, message);
     return t;
   }
 
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java
index 60f752d1603..5ce280cd76f 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MetricsAsserts.java
@@ -20,10 +20,15 @@
 
 import static org.apache.hadoop.util.Preconditions.*;
 
-import org.junit.Assert;
-
 import static org.mockito.AdditionalMatchers.geq;
-import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.argThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
 import org.mockito.stubbing.Answer;
 import org.mockito.invocation.InvocationOnMock;
@@ -150,8 +155,8 @@ public static MetricsInfo anyInfo() {
    */
   public static void assertGauge(String name, int expected,
                                  MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getIntGauge(name, rb));
+    assertEquals(expected, getIntGauge(name, rb),
+        "Bad value for metric " + name);
   }
 
   public static int getIntGauge(String name, MetricsRecordBuilder rb) {
@@ -169,8 +174,8 @@ public static int getIntGauge(String name, MetricsRecordBuilder rb) {
    */
   public static void assertCounter(String name, int expected,
                                    MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getIntCounter(name, rb));
+    assertEquals(expected, getIntCounter(name, rb),
+        "Bad value for metric " + name);
   }
 
   public static int getIntCounter(String name, MetricsRecordBuilder rb) {
@@ -189,8 +194,8 @@ public static int getIntCounter(String name, MetricsRecordBuilder rb) {
    */
   public static void assertGauge(String name, long expected,
                                  MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getLongGauge(name, rb));
+    assertEquals(expected, getLongGauge(name, rb),
+        "Bad value for metric " + name);
   }
 
   public static long getLongGauge(String name, MetricsRecordBuilder rb) {
@@ -208,8 +213,8 @@ public static long getLongGauge(String name, MetricsRecordBuilder rb) {
    */
   public static void assertGauge(String name, double expected,
                                  MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getDoubleGauge(name, rb), EPSILON);
+    assertEquals(expected, getDoubleGauge(name, rb), EPSILON,
+        "Bad value for metric " + name);
   }
 
   public static double getDoubleGauge(String name, MetricsRecordBuilder rb) {
@@ -227,8 +232,8 @@ public static double getDoubleGauge(String name, MetricsRecordBuilder rb) {
    */
   public static void assertCounter(String name, long expected,
                                    MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getLongCounter(name, rb));
+    assertEquals(expected, getLongCounter(name, rb),
+        "Bad value for metric " + name);
   }
 
   public static long getLongCounter(String name, MetricsRecordBuilder rb) {
@@ -260,8 +265,8 @@ public static String getStringMetric(String name, MetricsRecordBuilder rb) {
    */
   public static void assertGauge(String name, float expected,
                                  MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad value for metric " + name,
-        expected, getFloatGauge(name, rb), EPSILON);
+    assertEquals(expected, getFloatGauge(name, rb), EPSILON,
+        "Bad value for metric " + name);
   }
 
   public static float getFloatGauge(String name, MetricsRecordBuilder rb) {
@@ -275,8 +280,8 @@ public static float getFloatGauge(String name, MetricsRecordBuilder rb) {
    * Check that this metric was captured exactly once.
    */
   private static void checkCaptured(ArgumentCaptor<?> captor, String name) {
-    Assert.assertEquals("Expected exactly one metric for name " + name,
-        1, captor.getAllValues().size());
+    assertEquals(1, captor.getAllValues().size(),
+        "Expected exactly one metric for name " + name);
   }
 
   /**
@@ -331,8 +336,8 @@ public static void assertCounter(String name, long expected,
    */
   public static void assertCounterGt(String name, long greater,
                                      MetricsRecordBuilder rb) {
-    Assert.assertTrue("Bad value for metric " + name,
-        getLongCounter(name, rb) > greater);
+    assertTrue(getLongCounter(name, rb) > greater,
+        "Bad value for metric " + name);
   }
 
   /**
@@ -354,8 +359,8 @@ public static void assertCounterGt(String name, long greater,
    */
   public static void assertGaugeGt(String name, double greater,
                                    MetricsRecordBuilder rb) {
-    Assert.assertTrue("Bad value for metric " + name,
-        getDoubleGauge(name, rb) > greater);
+    assertTrue(getDoubleGauge(name, rb) > greater,
+        "Bad value for metric " + name);
   }
 
   /**
@@ -367,8 +372,8 @@ public static void assertGaugeGt(String name, double greater,
   public static void assertGaugeGte(String name, double greater,
       MetricsRecordBuilder rb) {
     double curValue = getDoubleGauge(name, rb);
-    Assert.assertTrue("Bad value for metric " + name,
-        curValue >= greater);
+    assertTrue(curValue >= greater,
+        "Bad value for metric " + name);
   }
 
   /**
@@ -444,7 +449,7 @@ public static void assertInverseQuantileGauges(String prefix,
    */
   public static void assertTag(String name, String expected,
       MetricsRecordBuilder rb) {
-    Assert.assertEquals("Bad Tag for metric " + name,
+    assertEquals("Bad Tag for metric " + name,
         expected, getStringTag(name, rb));
   }
 
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MoreAsserts.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MoreAsserts.java
index f6e6055d78e..3aa4b292491 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MoreAsserts.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/MoreAsserts.java
@@ -21,8 +21,8 @@
 import java.util.Iterator;
 import java.util.concurrent.CompletableFuture;
 
-import org.assertj.core.api.Assertions;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
+import static org.assertj.core.api.Assertions.assertThat;
 
 /**
  * A few more asserts
@@ -42,10 +42,10 @@ public static <T> void assertEquals(String s, T[] expected,
     Iterator<T> it = actual.iterator();
     int i = 0;
     for (; i < expected.length && it.hasNext(); ++i) {
-      Assert.assertEquals("Element " + i + " for " + s, expected[i], it.next());
+      Assertions.assertEquals(expected[i], it.next(), "Element " + i + " for " + s);
     }
-    Assert.assertTrue("Expected more elements", i == expected.length);
-    Assert.assertTrue("Expected less elements", !it.hasNext());
+    Assertions.assertTrue(i == expected.length, "Expected more elements");
+    Assertions.assertTrue(!it.hasNext(), "Expected less elements");
   }
 
   /**
@@ -62,26 +62,26 @@ public static <T> void assertEquals(String s, Iterable<T> expected,
     Iterator<T> ita = actual.iterator();
     int i = 0;
     while (ite.hasNext() && ita.hasNext()) {
-      Assert.assertEquals("Element " + i + " for " + s, ite.next(), ita.next());
+      Assertions.assertEquals(ite.next(), ita.next(), "Element " + i + " for " + s);
     }
-    Assert.assertTrue("Expected more elements", !ite.hasNext());
-    Assert.assertTrue("Expected less elements", !ita.hasNext());
+    Assertions.assertTrue(!ite.hasNext(), "Expected more elements");
+    Assertions.assertTrue(!ita.hasNext(), "Expected less elements");
   }
 
 
   public static <T> void assertFutureCompletedSuccessfully(CompletableFuture<T> future) {
-    Assertions.assertThat(future.isDone())
+    assertThat(future.isDone())
             .describedAs("This future is supposed to be " +
                     "completed successfully")
             .isTrue();
-    Assertions.assertThat(future.isCompletedExceptionally())
+    assertThat(future.isCompletedExceptionally())
             .describedAs("This future is supposed to be " +
                     "completed successfully")
             .isFalse();
   }
 
   public static <T> void assertFutureFailedExceptionally(CompletableFuture<T> future) {
-    Assertions.assertThat(future.isCompletedExceptionally())
+    assertThat(future.isCompletedExceptionally())
             .describedAs("This future is supposed to be " +
                     "completed exceptionally")
             .isTrue();
@@ -94,7 +94,7 @@ public static <T> void assertFutureFailedExceptionally(CompletableFuture<T> futu
    * @param message error message to print in case of mismatch.
    */
   public static <T> void assertEqual(T actual, T expected, String message) {
-    Assertions.assertThat(actual)
+    assertThat(actual)
             .describedAs("Mismatch in %s", message)
             .isEqualTo(expected);
   }
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tools/GetGroupsTestBase.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tools/GetGroupsTestBase.java
index a31700778dc..b6244efe74d 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tools/GetGroupsTestBase.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/tools/GetGroupsTestBase.java
@@ -17,7 +17,7 @@
  */
 package org.apache.hadoop.tools;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -27,8 +27,8 @@
 import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public abstract class GetGroupsTestBase {
   
@@ -38,7 +38,7 @@ public abstract class GetGroupsTestBase {
   
   protected abstract Tool getTool(PrintStream o);
   
-  @Before
+  @BeforeEach
   public void setUpUsers() throws IOException {
     // Make sure the current user's info is in the list of test users.
     UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
@@ -52,42 +52,40 @@ public void setUpUsers() throws IOException {
   public void testNoUserGiven() throws Exception {
     String actualOutput = runTool(conf, new String[0], true);
     UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
-    assertEquals("No user provided should default to current user",
-        getExpectedOutput(currentUser), actualOutput);
+    assertEquals(getExpectedOutput(currentUser), actualOutput,
+        "No user provided should default to current user");
   }
   
   @Test
   public void testExistingUser() throws Exception {
     String actualOutput = runTool(conf, new String[]{testUser1.getUserName()}, true);
-    assertEquals("Show only the output of the user given",
-        getExpectedOutput(testUser1), actualOutput);
+    assertEquals(getExpectedOutput(testUser1), actualOutput,
+        "Show only the output of the user given");
   }
   
   @Test
   public void testMultipleExistingUsers() throws Exception {
     String actualOutput = runTool(conf,
         new String[]{testUser1.getUserName(), testUser2.getUserName()}, true);
-    assertEquals("Show the output for both users given",
-        getExpectedOutput(testUser1) + getExpectedOutput(testUser2), actualOutput);
+    assertEquals(getExpectedOutput(testUser1) + getExpectedOutput(testUser2), actualOutput,
+        "Show the output for both users given");
   }
   
   @Test
   public void testNonExistentUser() throws Exception {
     String actualOutput = runTool(conf,
         new String[]{"does-not-exist"}, true);
-    assertEquals("Show the output for only the user given, with no groups",
-        getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist")),
-        actualOutput);
+    assertEquals(getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist")),
+        actualOutput, "Show the output for only the user given, with no groups");
   }
   
   @Test
   public void testMultipleNonExistingUsers() throws Exception {
     String actualOutput = runTool(conf,
         new String[]{"does-not-exist1", "does-not-exist2"}, true);
-    assertEquals("Show the output for only the user given, with no groups",
-        getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist1")) +
+    assertEquals(getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist1")) +
         getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist2")),
-        actualOutput);
+        actualOutput, "Show the output for only the user given, with no groups");
   }
   
   @Test
@@ -95,12 +93,12 @@ public void testExistingInterleavedWithNonExistentUsers() throws Exception {
     String actualOutput = runTool(conf,
         new String[]{"does-not-exist1", testUser1.getUserName(),
                      "does-not-exist2", testUser2.getUserName()}, true);
-    assertEquals("Show the output for only the user given, with no groups",
-        getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist1")) +
+    assertEquals(getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist1")) +
         getExpectedOutput(testUser1) +
         getExpectedOutput(UserGroupInformation.createRemoteUser("does-not-exist2")) +
         getExpectedOutput(testUser2),
-        actualOutput);
+        actualOutput,
+        "Show the output for only the user given, with no groups");
   }
   
   private static String getExpectedOutput(UserGroupInformation user) {
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/contract/hdfs/HDFSContract.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/contract/hdfs/HDFSContract.java
index 74b9a35adfc..4ff588a0bad 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/contract/hdfs/HDFSContract.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/fs/contract/hdfs/HDFSContract.java
@@ -27,7 +27,7 @@
 import org.apache.hadoop.hdfs.DFSConfigKeys;
 import org.apache.hadoop.hdfs.HdfsConfiguration;
 import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 
 import java.io.IOException;
 
@@ -73,14 +73,14 @@ public static MiniDFSCluster getCluster() {
   @Override
   public void init() throws IOException {
     super.init();
-    Assert.assertTrue("contract options not loaded",
-                      isSupported(ContractOptions.IS_CASE_SENSITIVE, false));
+    Assertions.assertTrue(isSupported(ContractOptions.IS_CASE_SENSITIVE, false),
+        "contract options not loaded");
   }
 
   @Override
   public FileSystem getTestFileSystem() throws IOException {
     //assumes cluster is not null
-    Assert.assertNotNull("cluster not created", cluster);
+    Assertions.assertNotNull(cluster, "cluster not created");
     return cluster.getFileSystem();
   }
 
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestGetGroupsWithHA.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestGetGroupsWithHA.java
index c3c22759d96..d2f6ef75f54 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestGetGroupsWithHA.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/ha/TestGetGroupsWithHA.java
@@ -26,14 +26,14 @@
 import org.apache.hadoop.hdfs.tools.GetGroups;
 import org.apache.hadoop.tools.GetGroupsTestBase;
 import org.apache.hadoop.util.Tool;
-import org.junit.After;
-import org.junit.Before;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 public class TestGetGroupsWithHA extends GetGroupsTestBase {
   
   private MiniDFSCluster cluster;
   
-  @Before
+  @BeforeEach
   public void setUpNameNode() throws IOException {
     conf = new HdfsConfiguration();
     cluster = new MiniDFSCluster.Builder(conf)
@@ -42,7 +42,7 @@ public void setUpNameNode() throws IOException {
     HATestUtil.setFailoverConfigurations(cluster, conf);
   }
   
-  @After
+  @AfterEach
   public void tearDownNameNode() {
     if (cluster != null) {
       cluster.shutdown();
diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestGetGroups.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestGetGroups.java
index 3d9631dfe12..3430d924a5e 100644
--- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestGetGroups.java
+++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/tools/TestGetGroups.java
@@ -24,8 +24,8 @@
 import org.apache.hadoop.hdfs.MiniDFSCluster;
 import org.apache.hadoop.tools.GetGroupsTestBase;
 import org.apache.hadoop.util.Tool;
-import org.junit.After;
-import org.junit.Before;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Tests for the HDFS implementation of {@link GetGroups}
@@ -34,13 +34,13 @@ public class TestGetGroups extends GetGroupsTestBase {
   
   private MiniDFSCluster cluster;
 
-  @Before
+  @BeforeEach
   public void setUpNameNode() throws IOException {
     conf = new HdfsConfiguration();
     cluster = new MiniDFSCluster.Builder(conf).numDataNodes(0).build();
   }
   
-  @After
+  @AfterEach
   public void tearDownNameNode() {
     if (cluster != null) {
       cluster.shutdown();
diff --git a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3ATemporaryCredentials.java b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3ATemporaryCredentials.java
index f8455efc0a0..50af71e4196 100644
--- a/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3ATemporaryCredentials.java
+++ b/hadoop-tools/hadoop-aws/src/test/java/org/apache/hadoop/fs/s3a/ITestS3ATemporaryCredentials.java
@@ -30,7 +30,6 @@
 import software.amazon.awssdk.services.sts.StsClient;
 import software.amazon.awssdk.services.sts.StsClientBuilder;
 import software.amazon.awssdk.services.sts.model.Credentials;
-import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -56,7 +55,7 @@
 import static org.apache.hadoop.fs.s3a.auth.delegation.DelegationConstants.*;
 import static org.apache.hadoop.fs.s3a.auth.delegation.SessionTokenBinding.CREDENTIALS_CONVERTED_TO_DELEGATION_TOKEN;
 import static org.apache.hadoop.test.LambdaTestUtils.intercept;
-import static org.hamcrest.Matchers.containsString;
+import static org.assertj.core.api.Assertions.assertThat;
 
 /**
  * Tests use of temporary credentials (for example, AWS STS & S3).
@@ -205,9 +204,9 @@ public void testSessionTokenPropagation() throws Exception {
           = (SessionTokenIdentifier) fs.getDelegationToken("")
           .decodeIdentifier();
       String ids = identifier.toString();
-      assertThat("origin in " + ids,
-          identifier.getOrigin(),
-          containsString(CREDENTIALS_CONVERTED_TO_DELEGATION_TOKEN));
+      assertThat(identifier.getOrigin()).
+          contains(CREDENTIALS_CONVERTED_TO_DELEGATION_TOKEN).
+          as("origin in " + ids);
 
       // and validate the AWS bits to make sure everything has come across.
       assertCredentialsEqual("Reissued credentials in " + ids,
@@ -236,13 +235,10 @@ public void testSessionTokenExpiry() throws Exception {
     Duration actualDuration = Duration.between(localTimestamp,
         expirationTimestamp);
     Duration offset = actualDuration.minus(TEST_SESSION_TOKEN_DURATION);
-
-    assertThat(
-        "Duration of session " + actualDuration
-            + " out of expected range of with " + offset
-            + " this host's clock may be wrong.",
-        offset.getSeconds(),
-        Matchers.lessThanOrEqualTo(permittedExpiryOffset));
+    assertThat(offset.getSeconds()).isLessThanOrEqualTo(permittedExpiryOffset).
+        as( "Duration of session " + actualDuration +
+        " out of expected range of with " + offset +
+        " this host's clock may be wrong.");
   }
 
   protected void updateConfigWithSessionCreds(final Configuration conf,


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org