HDFS-13893. DiskBalancer: no validations for Disk balancer commands. Contributed by Lokesh Jain.

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
This commit is contained in:
Lokesh Jain 2019-06-20 20:22:14 -07:00 committed by Wei-Chiu Chuang
parent 98d2065643
commit 272b96d243
2 changed files with 19 additions and 0 deletions

View File

@ -21,6 +21,7 @@ import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.Options;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.hdfs.HdfsConfiguration;
@ -37,6 +38,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.PrintStream;
import java.util.Arrays;
/**
* DiskBalancer is a tool that can be used to ensure that data is spread evenly
@ -191,6 +193,12 @@ public class DiskBalancerCLI extends Configured implements Tool {
public int run(String[] args) throws Exception {
Options opts = getOpts();
CommandLine cmd = parseArgs(args, opts);
String[] cmdArgs = cmd.getArgs();
if (cmdArgs.length > 2) {
throw new HadoopIllegalArgumentException(
"Invalid or extra Arguments: " + Arrays
.toString(Arrays.copyOfRange(cmdArgs, 2, cmdArgs.length)));
}
return dispatch(cmd, opts);
}

View File

@ -44,6 +44,7 @@ import java.util.List;
import java.util.Scanner;
import org.apache.commons.lang3.StringUtils;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
@ -384,6 +385,16 @@ public class TestDiskBalancerCommand {
return planFileFullName;
}
/* test exception on invalid arguments */
@Test(timeout = 60000)
public void testExceptionOnInvalidArguments() throws Exception {
final String cmdLine = "hdfs diskbalancer random1 -report random2 random3";
thrown.expect(HadoopIllegalArgumentException.class);
thrown.expectMessage(
"Invalid or extra Arguments: [random1, random2, random3]");
runCommand(cmdLine);
}
/* test basic report */
@Test(timeout = 60000)
public void testReportSimple() throws Exception {