HADOOP-11657. Align the output of `hadoop fs -du` to be more Unix-like. (aajisaka)

This commit is contained in:
Akira Ajisaka 2015-03-01 21:09:15 -08:00
parent e9ac88aac7
commit 30e73ebc77
3 changed files with 42 additions and 2 deletions

View File

@ -13,6 +13,9 @@ Trunk (Unreleased)
HADOOP-10950. rework heap management vars (John Smith via aw)
HADOOP-11657. Align the output of `hadoop fs -du` to be more Unix-like.
(aajisaka)
NEW FEATURES
HADOOP-6590. Add a username check for hadoop sub-commands (John Smith via aw)

View File

@ -132,15 +132,23 @@ class FsUsage extends FsCommand {
}
@Override
protected void processPathArgument(PathData item) throws IOException {
protected void processArguments(LinkedList<PathData> args)
throws IOException {
usagesTable = new TableBuilder(3);
super.processArguments(args);
if (!usagesTable.isEmpty()) {
usagesTable.printToStream(out);
}
}
@Override
protected void processPathArgument(PathData item) throws IOException {
// go one level deep on dirs from cmdline unless in summary mode
if (!summary && item.stat.isDirectory()) {
recursePath(item);
} else {
super.processPathArgument(item);
}
usagesTable.printToStream(out);
}
@Override

View File

@ -95,6 +95,14 @@ public class TestDFSShell {
return f;
}
static Path writeByte(FileSystem fs, Path f) throws IOException {
DataOutputStream out = fs.create(f);
out.writeByte(1);
out.close();
assertTrue(fs.exists(f));
return f;
}
static Path mkdir(FileSystem fs, Path p) throws IOException {
assertTrue(fs.mkdirs(p));
assertTrue(fs.exists(p));
@ -272,6 +280,27 @@ public class TestDFSShell {
Long combinedDiskUsed = myFileDiskUsed + myFile2DiskUsed;
assertThat(returnString, containsString(combinedLength.toString()));
assertThat(returnString, containsString(combinedDiskUsed.toString()));
// Check if output is rendered properly with multiple input paths
Path myFile3 = new Path("/test/dir/file3");
writeByte(fs, myFile3);
assertTrue(fs.exists(myFile3));
args = new String[3];
args[0] = "-du";
args[1] = "/test/dir/file3";
args[2] = "/test/dir/file2";
val = -1;
try {
val = shell.run(args);
} catch (Exception e) {
System.err.println("Exception raised from DFSShell.run " +
e.getLocalizedMessage());
}
assertEquals("Return code should be 0.", 0, val);
returnString = out.toString();
out.reset();
assertTrue(returnString.contains("1 2 /test/dir/file3"));
assertTrue(returnString.contains("23 46 /test/dir/file2"));
} finally {
System.setOut(psBackup);
cluster.shutdown();