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