HADOOP-12442. Display help if the command option to 'hdfs dfs' is not valid (Contributed by nijel)
(cherry picked from commit 861b52db24
)
This commit is contained in:
parent
e5dc723d48
commit
b46e4ceafd
|
@ -651,6 +651,9 @@ Release 2.8.0 - UNRELEASED
|
||||||
HADOOP-12437. Allow SecurityUtil to lookup alternate hostnames.
|
HADOOP-12437. Allow SecurityUtil to lookup alternate hostnames.
|
||||||
(Arpit Agarwal)
|
(Arpit Agarwal)
|
||||||
|
|
||||||
|
HADOOP-12442. Display help if the command option to 'hdfs dfs' is not valid
|
||||||
|
(nijel via vinayakumarb)
|
||||||
|
|
||||||
Release 2.7.2 - UNRELEASED
|
Release 2.7.2 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -313,6 +313,7 @@ public class FsShell extends Configured implements Tool {
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
displayError(cmd, e.getLocalizedMessage());
|
displayError(cmd, e.getLocalizedMessage());
|
||||||
|
printUsage(System.err);
|
||||||
if (instance != null) {
|
if (instance != null) {
|
||||||
printInstanceUsage(System.err, instance);
|
printInstanceUsage(System.err, instance);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,8 +17,12 @@
|
||||||
*/
|
*/
|
||||||
package org.apache.hadoop.fs;
|
package org.apache.hadoop.fs;
|
||||||
|
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
import junit.framework.AssertionFailedError;
|
import junit.framework.AssertionFailedError;
|
||||||
import org.apache.hadoop.conf.Configuration;
|
import org.apache.hadoop.conf.Configuration;
|
||||||
|
import org.apache.hadoop.io.IOUtils;
|
||||||
import org.apache.hadoop.tracing.SetSpanReceiver;
|
import org.apache.hadoop.tracing.SetSpanReceiver;
|
||||||
import org.apache.hadoop.tracing.SpanReceiverHost;
|
import org.apache.hadoop.tracing.SpanReceiverHost;
|
||||||
import org.apache.hadoop.util.ToolRunner;
|
import org.apache.hadoop.util.ToolRunner;
|
||||||
|
@ -67,4 +71,33 @@ public class TestFsShell {
|
||||||
SetSpanReceiver.getMap()
|
SetSpanReceiver.getMap()
|
||||||
.get("help").get(0).getKVAnnotations().get("args"));
|
.get("help").get(0).getKVAnnotations().get("args"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDFSWithInvalidCommmand() throws Throwable {
|
||||||
|
Configuration conf = new Configuration();
|
||||||
|
FsShell shell = new FsShell(conf);
|
||||||
|
String[] args = new String[1];
|
||||||
|
args[0] = "dfs -mkdirs";
|
||||||
|
final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||||
|
final PrintStream out = new PrintStream(bytes);
|
||||||
|
final PrintStream oldErr = System.err;
|
||||||
|
try {
|
||||||
|
System.setErr(out);
|
||||||
|
ToolRunner.run(shell, args);
|
||||||
|
String errorValue=new String(bytes.toString());
|
||||||
|
Assert
|
||||||
|
.assertTrue(
|
||||||
|
"FSShell dfs command did not print the error " +
|
||||||
|
"message when invalid command is passed",
|
||||||
|
errorValue.contains("-mkdirs: Unknown command"));
|
||||||
|
Assert
|
||||||
|
.assertTrue(
|
||||||
|
"FSShell dfs command did not print help " +
|
||||||
|
"message when invalid command is passed",
|
||||||
|
errorValue.contains("Usage: hadoop fs [generic options]"));
|
||||||
|
} finally {
|
||||||
|
IOUtils.closeStream(out);
|
||||||
|
System.setErr(oldErr);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue