HADOOP-11657. Align the output of `hadoop fs -du` to be more Unix-like. (aajisaka)
This commit is contained in:
parent
e9ac88aac7
commit
30e73ebc77
|
@ -13,6 +13,9 @@ Trunk (Unreleased)
|
||||||
|
|
||||||
HADOOP-10950. rework heap management vars (John Smith via aw)
|
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
|
NEW FEATURES
|
||||||
|
|
||||||
HADOOP-6590. Add a username check for hadoop sub-commands (John Smith via aw)
|
HADOOP-6590. Add a username check for hadoop sub-commands (John Smith via aw)
|
||||||
|
|
|
@ -132,15 +132,23 @@ class FsUsage extends FsCommand {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void processPathArgument(PathData item) throws IOException {
|
protected void processArguments(LinkedList<PathData> args)
|
||||||
|
throws IOException {
|
||||||
usagesTable = new TableBuilder(3);
|
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
|
// go one level deep on dirs from cmdline unless in summary mode
|
||||||
if (!summary && item.stat.isDirectory()) {
|
if (!summary && item.stat.isDirectory()) {
|
||||||
recursePath(item);
|
recursePath(item);
|
||||||
} else {
|
} else {
|
||||||
super.processPathArgument(item);
|
super.processPathArgument(item);
|
||||||
}
|
}
|
||||||
usagesTable.printToStream(out);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -95,6 +95,14 @@ public class TestDFSShell {
|
||||||
return f;
|
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 {
|
static Path mkdir(FileSystem fs, Path p) throws IOException {
|
||||||
assertTrue(fs.mkdirs(p));
|
assertTrue(fs.mkdirs(p));
|
||||||
assertTrue(fs.exists(p));
|
assertTrue(fs.exists(p));
|
||||||
|
@ -272,6 +280,27 @@ public class TestDFSShell {
|
||||||
Long combinedDiskUsed = myFileDiskUsed + myFile2DiskUsed;
|
Long combinedDiskUsed = myFileDiskUsed + myFile2DiskUsed;
|
||||||
assertThat(returnString, containsString(combinedLength.toString()));
|
assertThat(returnString, containsString(combinedLength.toString()));
|
||||||
assertThat(returnString, containsString(combinedDiskUsed.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 {
|
} finally {
|
||||||
System.setOut(psBackup);
|
System.setOut(psBackup);
|
||||||
cluster.shutdown();
|
cluster.shutdown();
|
||||||
|
|
Loading…
Reference in New Issue