HDFS-9410. Some tests should always reset sysout and syserr. Contributed by Xiao Chen.

This commit is contained in:
Walter Su 2015-11-13 14:21:14 +08:00
parent 7ff280fca9
commit cccf88480b
12 changed files with 179 additions and 123 deletions

View File

@ -2299,6 +2299,9 @@ Release 2.8.0 - UNRELEASED
HDFS-9396. Total files and directories on jmx and web UI on standby is HDFS-9396. Total files and directories on jmx and web UI on standby is
uninitialized. (kihwal) uninitialized. (kihwal)
HDFS-9410. Some tests should always reset sysout and syserr.
(Xiao Chen via waltersu4549)
Release 2.7.3 - UNRELEASED Release 2.7.3 - UNRELEASED
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -955,9 +955,9 @@ private static void runCount(String path, long dirs, long files, FsShell shell
assertEquals(dirs, in.nextLong()); assertEquals(dirs, in.nextLong());
assertEquals(files, in.nextLong()); assertEquals(files, in.nextLong());
} finally { } finally {
System.setOut(oldOut);
if (in!=null) in.close(); if (in!=null) in.close();
IOUtils.closeStream(out); IOUtils.closeStream(out);
System.setOut(oldOut);
System.out.println("results:\n" + results); System.out.println("results:\n" + results);
} }
} }
@ -1720,9 +1720,9 @@ private static String runLsr(final FsShell shell, String root, int returnvalue
assertEquals(returnvalue, shell.run(new String[]{"-lsr", root})); assertEquals(returnvalue, shell.run(new String[]{"-lsr", root}));
results = bytes.toString(); results = bytes.toString();
} finally { } finally {
IOUtils.closeStream(out);
System.setOut(oldOut); System.setOut(oldOut);
System.setErr(oldErr); System.setErr(oldErr);
IOUtils.closeStream(out);
} }
System.out.println("results:\n" + results); System.out.println("results:\n" + results);
return results; return results;
@ -3179,16 +3179,17 @@ public void testListReserved() throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos); PrintStream ps = new PrintStream(baos);
System.setErr(ps); System.setErr(ps);
try {
runCmd(shell, "-ls", "/.reserved"); runCmd(shell, "-ls", "/.reserved");
assertEquals(0, baos.toString().length()); assertEquals(0, baos.toString().length());
runCmd(shell, "-ls", "/.reserved/raw/.reserved"); runCmd(shell, "-ls", "/.reserved/raw/.reserved");
assertTrue(baos.toString().contains("No such file or directory")); assertTrue(baos.toString().contains("No such file or directory"));
} finally {
System.setErr(syserr); System.setErr(syserr);
cluster.shutdown(); cluster.shutdown();
} }
}
@Test (timeout = 30000) @Test (timeout = 30000)
public void testMkdirReserved() throws IOException { public void testMkdirReserved() throws IOException {
@ -3253,14 +3254,16 @@ public void testCopyReserved() throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos); PrintStream ps = new PrintStream(baos);
System.setErr(ps); System.setErr(ps);
try {
FsShell shell = new FsShell(); FsShell shell = new FsShell();
shell.setConf(conf); shell.setConf(conf);
runCmd(shell, "-cp", src.toString(), "/.reserved"); runCmd(shell, "-cp", src.toString(), "/.reserved");
assertTrue(baos.toString().contains("Invalid path name /.reserved")); assertTrue(baos.toString().contains("Invalid path name /.reserved"));
} finally {
System.setErr(syserr); System.setErr(syserr);
cluster.shutdown(); cluster.shutdown();
} }
}
@Test (timeout = 30000) @Test (timeout = 30000)
public void testChmodReserved() throws IOException { public void testChmodReserved() throws IOException {
@ -3274,14 +3277,16 @@ public void testChmodReserved() throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos); PrintStream ps = new PrintStream(baos);
System.setErr(ps); System.setErr(ps);
try {
FsShell shell = new FsShell(); FsShell shell = new FsShell();
shell.setConf(conf); shell.setConf(conf);
runCmd(shell, "-chmod", "777", "/.reserved"); runCmd(shell, "-chmod", "777", "/.reserved");
assertTrue(baos.toString().contains("Invalid path name /.reserved")); assertTrue(baos.toString().contains("Invalid path name /.reserved"));
} finally {
System.setErr(syserr); System.setErr(syserr);
cluster.shutdown(); cluster.shutdown();
} }
}
@Test (timeout = 30000) @Test (timeout = 30000)
public void testChownReserved() throws IOException { public void testChownReserved() throws IOException {
@ -3295,14 +3300,16 @@ public void testChownReserved() throws IOException {
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos); PrintStream ps = new PrintStream(baos);
System.setErr(ps); System.setErr(ps);
try {
FsShell shell = new FsShell(); FsShell shell = new FsShell();
shell.setConf(conf); shell.setConf(conf);
runCmd(shell, "-chown", "user1", "/.reserved"); runCmd(shell, "-chown", "user1", "/.reserved");
assertTrue(baos.toString().contains("Invalid path name /.reserved")); assertTrue(baos.toString().contains("Invalid path name /.reserved"));
} finally {
System.setErr(syserr); System.setErr(syserr);
cluster.shutdown(); cluster.shutdown();
} }
}
@Test (timeout = 30000) @Test (timeout = 30000)
public void testSymLinkReserved() throws IOException { public void testSymLinkReserved() throws IOException {

View File

@ -97,10 +97,14 @@ static String execCmd(FsShell shell, final String[] args) throws Exception {
ByteArrayOutputStream baout = new ByteArrayOutputStream(); ByteArrayOutputStream baout = new ByteArrayOutputStream();
PrintStream out = new PrintStream(baout, true); PrintStream out = new PrintStream(baout, true);
PrintStream old = System.out; PrintStream old = System.out;
int ret;
try {
System.setOut(out); System.setOut(out);
int ret = shell.run(args); ret = shell.run(args);
out.close(); out.close();
} finally {
System.setOut(old); System.setOut(old);
}
return String.valueOf(ret); return String.valueOf(ret);
} }

View File

@ -1054,13 +1054,18 @@ public void testSetSpaceQuotaWhenStorageTypeIsWrong() throws Exception {
conf.set(FS_DEFAULT_NAME_KEY, "hdfs://127.0.0.1:8020"); conf.set(FS_DEFAULT_NAME_KEY, "hdfs://127.0.0.1:8020");
DFSAdmin admin = new DFSAdmin(conf); DFSAdmin admin = new DFSAdmin(conf);
ByteArrayOutputStream err = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream();
PrintStream oldErr = System.err;
try {
System.setErr(new PrintStream(err)); System.setErr(new PrintStream(err));
String[] args = { "-setSpaceQuota", "100", "-storageType", "COLD", String[] args =
"/testDir" }; { "-setSpaceQuota", "100", "-storageType", "COLD", "/testDir" };
admin.run(args); admin.run(args);
String errOutput = new String(err.toByteArray(), Charsets.UTF_8); String errOutput = new String(err.toByteArray(), Charsets.UTF_8);
assertTrue(errOutput.contains(StorageType.getTypesSupportingQuota() assertTrue(
.toString())); errOutput.contains(StorageType.getTypesSupportingQuota().toString()));
} finally {
System.setErr(oldErr);
}
} }
/** /**

View File

@ -232,12 +232,14 @@ public void testFormatWithInvalidClusterIdOption() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream stdErr = new PrintStream(baos); PrintStream stdErr = new PrintStream(baos);
System.setErr(stdErr); System.setErr(stdErr);
try {
NameNode.createNameNode(argv, config); NameNode.createNameNode(argv, config);
// Check if usage is printed // Check if usage is printed
assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode")); assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode"));
} finally {
System.setErr(origErr); System.setErr(origErr);
}
// check if the version file does not exists. // check if the version file does not exists.
File version = new File(hdfsDir, "current/VERSION"); File version = new File(hdfsDir, "current/VERSION");
@ -258,12 +260,14 @@ public void testFormatWithNoClusterIdOption() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream stdErr = new PrintStream(baos); PrintStream stdErr = new PrintStream(baos);
System.setErr(stdErr); System.setErr(stdErr);
try {
NameNode.createNameNode(argv, config); NameNode.createNameNode(argv, config);
// Check if usage is printed // Check if usage is printed
assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode")); assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode"));
} finally {
System.setErr(origErr); System.setErr(origErr);
}
// check if the version file does not exists. // check if the version file does not exists.
File version = new File(hdfsDir, "current/VERSION"); File version = new File(hdfsDir, "current/VERSION");
@ -285,12 +289,14 @@ public void testFormatWithEmptyClusterIdOption() throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream stdErr = new PrintStream(baos); PrintStream stdErr = new PrintStream(baos);
System.setErr(stdErr); System.setErr(stdErr);
try {
NameNode.createNameNode(argv, config); NameNode.createNameNode(argv, config);
// Check if usage is printed // Check if usage is printed
assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode")); assertTrue(baos.toString("UTF-8").contains("Usage: hdfs namenode"));
} finally {
System.setErr(origErr); System.setErr(origErr);
}
// check if the version file does not exists. // check if the version file does not exists.
File version = new File(hdfsDir, "current/VERSION"); File version = new File(hdfsDir, "current/VERSION");

View File

@ -72,6 +72,7 @@ public void testMetadataVersionOutput() throws IOException {
final PrintStream origOut = System.out; final PrintStream origOut = System.out;
final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final PrintStream stdOut = new PrintStream(baos); final PrintStream stdOut = new PrintStream(baos);
try {
System.setOut(stdOut); System.setOut(stdOut);
try { try {
NameNode.createNameNode(new String[] { "-metadataVersion" }, conf); NameNode.createNameNode(new String[] { "-metadataVersion" }, conf);
@ -84,6 +85,8 @@ public void testMetadataVersionOutput() throws IOException {
contains("HDFS Image Version: " + verNumStr)); contains("HDFS Image Version: " + verNumStr));
assertTrue(baos.toString("UTF-8"). assertTrue(baos.toString("UTF-8").
contains("Software format version: " + verNumStr)); contains("Software format version: " + verNumStr));
} finally {
System.setOut(origOut); System.setOut(origOut);
} }
}
} }

View File

@ -1044,25 +1044,32 @@ public void testRenameSnapshotDiff() throws Exception {
public void testDeleteSnapshotCommandWithIllegalArguments() throws Exception { public void testDeleteSnapshotCommandWithIllegalArguments() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream psOut = new PrintStream(out); PrintStream psOut = new PrintStream(out);
PrintStream oldOut = System.out;
PrintStream oldErr = System.err;
try {
System.setOut(psOut); System.setOut(psOut);
System.setErr(psOut); System.setErr(psOut);
FsShell shell = new FsShell(); FsShell shell = new FsShell();
shell.setConf(conf); shell.setConf(conf);
String[] argv1 = {"-deleteSnapshot", "/tmp"}; String[] argv1 = { "-deleteSnapshot", "/tmp" };
int val = shell.run(argv1); int val = shell.run(argv1);
assertTrue(val == -1); assertTrue(val == -1);
assertTrue(out.toString().contains( assertTrue(out.toString()
argv1[0] + ": Incorrect number of arguments.")); .contains(argv1[0] + ": Incorrect number of arguments."));
out.reset(); out.reset();
String[] argv2 = {"-deleteSnapshot", "/tmp", "s1", "s2"}; String[] argv2 = { "-deleteSnapshot", "/tmp", "s1", "s2" };
val = shell.run(argv2); val = shell.run(argv2);
assertTrue(val == -1); assertTrue(val == -1);
assertTrue(out.toString().contains( assertTrue(out.toString()
argv2[0] + ": Incorrect number of arguments.")); .contains(argv2[0] + ": Incorrect number of arguments."));
psOut.close(); psOut.close();
out.close(); out.close();
} finally {
System.setOut(oldOut);
System.setErr(oldErr);
}
} }
/* /*

View File

@ -237,24 +237,31 @@ public void testRenameWithIllegalName() throws Exception {
public void testRenameSnapshotCommandWithIllegalArguments() throws Exception { public void testRenameSnapshotCommandWithIllegalArguments() throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream();
PrintStream psOut = new PrintStream(out); PrintStream psOut = new PrintStream(out);
PrintStream oldOut = System.out;
PrintStream oldErr = System.err;
try {
System.setOut(psOut); System.setOut(psOut);
System.setErr(psOut); System.setErr(psOut);
FsShell shell = new FsShell(); FsShell shell = new FsShell();
shell.setConf(conf); shell.setConf(conf);
String[] argv1 = {"-renameSnapshot", "/tmp", "s1"}; String[] argv1 = { "-renameSnapshot", "/tmp", "s1" };
int val = shell.run(argv1); int val = shell.run(argv1);
assertTrue(val == -1); assertTrue(val == -1);
assertTrue(out.toString().contains( assertTrue(out.toString()
argv1[0] + ": Incorrect number of arguments.")); .contains(argv1[0] + ": Incorrect number of arguments."));
out.reset(); out.reset();
String[] argv2 = {"-renameSnapshot", "/tmp", "s1", "s2", "s3"}; String[] argv2 = { "-renameSnapshot", "/tmp", "s1", "s2", "s3" };
val = shell.run(argv2); val = shell.run(argv2);
assertTrue(val == -1); assertTrue(val == -1);
assertTrue(out.toString().contains( assertTrue(out.toString()
argv2[0] + ": Incorrect number of arguments.")); .contains(argv2[0] + ": Incorrect number of arguments."));
psOut.close(); psOut.close();
out.close(); out.close();
} finally {
System.setOut(oldOut);
System.setErr(oldErr);
}
} }
} }

View File

@ -43,8 +43,8 @@ public class TestDFSAdminWithHA {
private MiniQJMHACluster cluster; private MiniQJMHACluster cluster;
private Configuration conf; private Configuration conf;
private DFSAdmin admin; private DFSAdmin admin;
private PrintStream originOut; private static final PrintStream oldOut = System.out;
private PrintStream originErr; private static final PrintStream oldErr = System.err;
private static final String NSID = "ns1"; private static final String NSID = "ns1";
private static String newLine = System.getProperty("line.separator"); private static String newLine = System.getProperty("line.separator");
@ -89,18 +89,19 @@ private void setUpHaCluster(boolean security) throws Exception {
admin.setConf(conf); admin.setConf(conf);
assertTrue(HAUtil.isHAEnabled(conf, "ns1")); assertTrue(HAUtil.isHAEnabled(conf, "ns1"));
originOut = System.out;
originErr = System.err;
System.setOut(new PrintStream(out)); System.setOut(new PrintStream(out));
System.setErr(new PrintStream(err)); System.setErr(new PrintStream(err));
} }
@After @After
public void tearDown() throws Exception { public void tearDown() throws Exception {
try {
System.out.flush(); System.out.flush();
System.err.flush(); System.err.flush();
System.setOut(originOut); } finally {
System.setErr(originErr); System.setOut(oldOut);
System.setErr(oldErr);
}
if (admin != null) { if (admin != null) {
admin.close(); admin.close();
} }

View File

@ -125,7 +125,9 @@ private static boolean checkPrintAllValues(JMXGet jmx) throws Exception {
String pattern = "List of all the available keys:"; String pattern = "List of all the available keys:";
PipedOutputStream pipeOut = new PipedOutputStream(); PipedOutputStream pipeOut = new PipedOutputStream();
PipedInputStream pipeIn = new PipedInputStream(pipeOut); PipedInputStream pipeIn = new PipedInputStream(pipeOut);
PrintStream oldErr = System.err;
System.setErr(new PrintStream(pipeOut)); System.setErr(new PrintStream(pipeOut));
try {
jmx.printAllValues(); jmx.printAllValues();
if ((size = pipeIn.available()) != 0) { if ((size = pipeIn.available()) != 0) {
bytes = new byte[size]; bytes = new byte[size];
@ -133,6 +135,9 @@ private static boolean checkPrintAllValues(JMXGet jmx) throws Exception {
} }
pipeOut.close(); pipeOut.close();
pipeIn.close(); pipeIn.close();
} finally {
System.setErr(oldErr);
}
return bytes != null ? new String(bytes).contains(pattern) : false; return bytes != null ? new String(bytes).contains(pattern) : false;
} }

View File

@ -103,6 +103,8 @@ private static String[] fillArgs(String arg) {
private void checkOutput(String[] args, String pattern, PrintStream out, private void checkOutput(String[] args, String pattern, PrintStream out,
Class<?> clazz) { Class<?> clazz) {
ByteArrayOutputStream outBytes = new ByteArrayOutputStream(); ByteArrayOutputStream outBytes = new ByteArrayOutputStream();
PrintStream oldOut = System.out;
PrintStream oldErr = System.err;
try { try {
PipedOutputStream pipeOut = new PipedOutputStream(); PipedOutputStream pipeOut = new PipedOutputStream();
PipedInputStream pipeIn = new PipedInputStream(pipeOut, PIPE_BUFFER_SIZE); PipedInputStream pipeIn = new PipedInputStream(pipeOut, PIPE_BUFFER_SIZE);
@ -125,6 +127,9 @@ private void checkOutput(String[] args, String pattern, PrintStream out,
assertTrue(new String(outBytes.toByteArray()).contains(pattern)); assertTrue(new String(outBytes.toByteArray()).contains(pattern));
} catch (Exception ex) { } catch (Exception ex) {
fail("checkOutput error " + ex); fail("checkOutput error " + ex);
} finally {
System.setOut(oldOut);
System.setErr(oldErr);
} }
} }

View File

@ -44,10 +44,13 @@ private String runTraceCommand(TraceAdmin trace, String... cmd)
try { try {
ret = trace.run(cmd); ret = trace.run(cmd);
} finally { } finally {
try {
System.out.flush(); System.out.flush();
} finally {
System.setOut(oldStdout); System.setOut(oldStdout);
System.setErr(oldStderr); System.setErr(oldStderr);
} }
}
return "ret:" + ret + ", " + baos.toString(); return "ret:" + ret + ", " + baos.toString();
} }