diff --git a/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml b/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
index ec4cd0ac5a7f..61f4cddad8c8 100644
--- a/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
+++ b/hadoop-hdds/common/dev-support/findbugsExcludeFile.xml
@@ -31,18 +31,4 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestHddsUtils.java b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestHddsUtils.java
index 7a6924e2b3a3..71fb2eae2333 100644
--- a/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestHddsUtils.java
+++ b/hadoop-hdds/common/src/test/java/org/apache/hadoop/hdds/TestHddsUtils.java
@@ -32,6 +32,7 @@
import java.net.InetSocketAddress;
import java.nio.file.Paths;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -43,6 +44,9 @@
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import org.apache.hadoop.ozone.ha.ConfUtils;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
/**
* Testing HddsUtils.
@@ -66,23 +70,37 @@ void testGetHostName() {
HddsUtils.getHostName(":1234"));
}
- @Test
- void validatePath() {
- HddsUtils.validatePath(Paths.get("/"), Paths.get("/"));
- HddsUtils.validatePath(Paths.get("/a"), Paths.get("/"));
- HddsUtils.validatePath(Paths.get("/a"), Paths.get("/a"));
- HddsUtils.validatePath(Paths.get("/a/b"), Paths.get("/a"));
- HddsUtils.validatePath(Paths.get("/a/b/c"), Paths.get("/a"));
- HddsUtils.validatePath(Paths.get("/a/../a/b"), Paths.get("/a"));
+ static List validPaths() {
+ return Arrays.asList(
+ Arguments.of("/", "/"),
+ Arguments.of("/a", "/"),
+ Arguments.of("/a", "/a"),
+ Arguments.of("/a/b", "/a"),
+ Arguments.of("/a/b/c", "/a"),
+ Arguments.of("/a/../a/b", "/a")
+ );
+ }
+ @ParameterizedTest
+ @MethodSource("validPaths")
+ void validatePathAcceptsValidPath(String path, String ancestor) {
+ HddsUtils.validatePath(Paths.get(path), Paths.get(ancestor));
+ }
+
+ static List invalidPaths() {
+ return Arrays.asList(
+ Arguments.of("/b/c", "/a"),
+ Arguments.of("/", "/a"),
+ Arguments.of("/a/..", "/a"),
+ Arguments.of("/a/../b", "/a")
+ );
+ }
+
+ @ParameterizedTest
+ @MethodSource("invalidPaths")
+ void validatePathRejectsInvalidPath(String path, String ancestor) {
assertThrows(IllegalArgumentException.class,
- () -> HddsUtils.validatePath(Paths.get("/b/c"), Paths.get("/a")));
- assertThrows(IllegalArgumentException.class,
- () -> HddsUtils.validatePath(Paths.get("/"), Paths.get("/a")));
- assertThrows(IllegalArgumentException.class,
- () -> HddsUtils.validatePath(Paths.get("/a/.."), Paths.get("/a")));
- assertThrows(IllegalArgumentException.class,
- () -> HddsUtils.validatePath(Paths.get("/a/../b"), Paths.get("/a")));
+ () -> HddsUtils.validatePath(Paths.get(path), Paths.get(ancestor)));
}
@Test