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 91e1669ed9..f88d0a60eb 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 @@ -218,6 +218,10 @@ public int run(String[] argv) throws Exception { "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]; @@ -712,6 +716,8 @@ private void manageSafeMode(String cmd) throws IOException { } else if (cmd.equals("get")) { boolean result = getSafeMode(); System.out.println("Safe Mode: " + result); + } else { + throw new IllegalArgumentException("Invalid argument: " + cmd); } } 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 2da5fb9540..2682e9a2d8 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 @@ -519,6 +519,7 @@ public void testManageSafeMode() throws Exception { assertTrue(routerContext.getRouter().getSafemodeService().isInSafeMode()); System.setOut(new PrintStream(out)); + System.setErr(new PrintStream(err)); assertEquals(0, ToolRunner.run(admin, new String[] {"-safemode", "get"})); assertTrue(out.toString().contains("true")); @@ -534,6 +535,19 @@ public void testManageSafeMode() throws Exception { assertEquals(0, ToolRunner.run(admin, new String[] {"-safemode", "get"})); assertTrue(out.toString().contains("false")); + + out.reset(); + assertEquals(-1, ToolRunner.run(admin, + new String[] {"-safemode", "get", "-random", "check" })); + assertTrue(err.toString(), err.toString() + .contains("safemode: Too many arguments, Max=1 argument allowed only")); + err.reset(); + + assertEquals(-1, + ToolRunner.run(admin, new String[] {"-safemode", "check" })); + assertTrue(err.toString(), + err.toString().contains("safemode: Invalid argument: check")); + err.reset(); } @Test