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 vi...@apache.org on 2018/09/03 09:00:23 UTC
[2/2] hadoop git commit: HDFS-13867. RBF: Add validation for max
arguments for Router admin ls, clrQuota, setQuota,
rm and nameservice commands. Contributed by Ayush Saxena.
HDFS-13867. RBF: Add validation for max arguments for Router admin ls, clrQuota, setQuota, rm and nameservice commands. Contributed by Ayush Saxena.
(cherry picked from commit 780df9034f265a8e602856b34cc21d9be02f5c48)
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/6776db5a
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/6776db5a
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/6776db5a
Branch: refs/heads/branch-3.1
Commit: 6776db5aecd016bf1d6936bbfe6f7becbb0d3d8d
Parents: e2e0fc2
Author: Vinayakumar B <vi...@apache.org>
Authored: Mon Sep 3 14:28:31 2018 +0530
Committer: Vinayakumar B <vi...@apache.org>
Committed: Mon Sep 3 14:29:28 2018 +0530
----------------------------------------------------------------------
.../hdfs/tools/federation/RouterAdmin.java | 45 ++++++++++++++++++--
.../federation/router/TestRouterAdminCLI.java | 35 +++++++++++++++
2 files changed, 76 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6776db5a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
index 46be373..ef8d7c1 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/tools/federation/RouterAdmin.java
@@ -146,6 +146,43 @@ public class RouterAdmin extends Configured implements Tool {
return getUsage(null);
}
+ /**
+ * Usage: validates the maximum number of arguments for a command.
+ * @param arg List of of command line parameters.
+ */
+ private void validateMax(String[] arg) {
+ if (arg[0].equals("-rm")) {
+ if (arg.length > 2) {
+ throw new IllegalArgumentException(
+ "Too many arguments, Max=1 argument allowed");
+ }
+ } else if (arg[0].equals("-ls")) {
+ if (arg.length > 2) {
+ throw new IllegalArgumentException(
+ "Too many arguments, Max=1 argument allowed");
+ }
+ } else if (arg[0].equals("-clrQuota")) {
+ if (arg.length > 2) {
+ throw new IllegalArgumentException(
+ "Too many arguments, Max=1 argument allowed");
+ }
+ } else if (arg[0].equals("-safemode")) {
+ if (arg.length > 2) {
+ throw new IllegalArgumentException(
+ "Too many arguments, Max=1 argument allowed only");
+ }
+ } else if (arg[0].equals("-nameservice")) {
+ if (arg.length > 3) {
+ throw new IllegalArgumentException(
+ "Too many arguments, Max=2 arguments allowed");
+ }
+ } else if (arg[0].equals("-getDisabledNameservices")) {
+ if (arg.length > 1) {
+ throw new IllegalArgumentException("No arguments allowed");
+ }
+ }
+ }
+
@Override
public int run(String[] argv) throws Exception {
if (argv.length < 1) {
@@ -222,6 +259,7 @@ public class RouterAdmin extends Configured implements Tool {
Exception debugException = null;
exitCode = 0;
try {
+ validateMax(argv);
if ("-add".equals(cmd)) {
if (addMount(argv, i)) {
System.out.println("Successfully added mount point " + argv[i]);
@@ -251,10 +289,6 @@ public class RouterAdmin extends Configured implements Tool {
"Successfully clear quota for mount point " + argv[i]);
}
} else if ("-safemode".equals(cmd)) {
- if (argv.length > 2) {
- throw new IllegalArgumentException(
- "Too many arguments, Max=1 argument allowed only");
- }
manageSafeMode(argv[i]);
} else if ("-nameservice".equals(cmd)) {
String subcmd = argv[i];
@@ -641,6 +675,9 @@ public class RouterAdmin extends Configured implements Tool {
throw new IllegalArgumentException(
"Cannot parse ssQuota: " + parameters[i]);
}
+ } else {
+ throw new IllegalArgumentException(
+ "Invalid argument : " + parameters[i]);
}
i++;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/6776db5a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
index 0c7321f..fa29cd9 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
+++ b/hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/router/TestRouterAdminCLI.java
@@ -267,6 +267,13 @@ public class TestRouterAdminCLI {
assertEquals(0, ToolRunner.run(admin, argv));
assertTrue(out.toString().contains(src));
+ // Test with wrong number of arguments
+ argv = new String[] {"-ls", srcWithSlash, "check", "check2"};
+ System.setErr(new PrintStream(err));
+ ToolRunner.run(admin, argv);
+ assertTrue(
+ err.toString().contains("Too many arguments, Max=1 argument allowed"));
+
out.reset();
GetMountTableEntriesRequest getRequest = GetMountTableEntriesRequest
.newInstance("/");
@@ -317,6 +324,13 @@ public class TestRouterAdminCLI {
assertEquals(0, ToolRunner.run(admin, argv));
assertTrue(out.toString().contains(
"Cannot remove mount point " + invalidPath));
+
+ // test wrong number of arguments
+ System.setErr(new PrintStream(err));
+ argv = new String[] {"-rm", src, "check" };
+ ToolRunner.run(admin, argv);
+ assertTrue(err.toString()
+ .contains("Too many arguments, Max=1 argument allowed"));
}
@Test
@@ -572,6 +586,18 @@ public class TestRouterAdminCLI {
// verify if quota unset successfully
assertEquals(HdfsConstants.QUOTA_RESET, quotaUsage.getQuota());
assertEquals(HdfsConstants.QUOTA_RESET, quotaUsage.getSpaceQuota());
+
+ // verify wrong arguments
+ System.setErr(new PrintStream(err));
+ argv = new String[] {"-clrQuota", src, "check"};
+ ToolRunner.run(admin, argv);
+ assertTrue(err.toString(),
+ err.toString().contains("Too many arguments, Max=1 argument allowed"));
+
+ argv = new String[] {"-setQuota", src, "check", "check2"};
+ err.reset();
+ ToolRunner.run(admin, argv);
+ assertTrue(err.toString().contains("Invalid argument : check"));
}
@Test
@@ -686,6 +712,15 @@ public class TestRouterAdminCLI {
new String[] {"-nameservice", "wrong", "ns0"}));
assertTrue("Got error: " + err.toString(),
err.toString().startsWith("nameservice: Unknown command: wrong"));
+
+ err.reset();
+ ToolRunner.run(admin,
+ new String[] {"-nameservice", "enable", "ns0", "check"});
+ assertTrue(
+ err.toString().contains("Too many arguments, Max=2 arguments allowed"));
+ err.reset();
+ ToolRunner.run(admin, new String[] {"-getDisabledNameservices", "check"});
+ assertTrue(err.toString().contains("No arguments allowed"));
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org