Repository: tajo Updated Branches: refs/heads/master dbaf9725a -> 9fcc9fd3a
TAJO-2091: Error or progress update should use stderr instead of stdout. Closes #977 Project: http://git-wip-us.apache.org/repos/asf/tajo/repo Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/9fcc9fd3 Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/9fcc9fd3 Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/9fcc9fd3 Branch: refs/heads/master Commit: 9fcc9fd3af4479c3042e4907938b18b6e264b500 Parents: dbaf972 Author: Hyunsik Choi <[email protected]> Authored: Mon Mar 21 15:22:29 2016 +0900 Committer: Hyunsik Choi <[email protected]> Committed: Mon Mar 21 15:22:29 2016 +0900 ---------------------------------------------------------------------- CHANGES | 3 ++ .../java/org/apache/tajo/cli/tsql/TajoCli.java | 27 +++++++---- .../tsql/commands/ConnectDatabaseCommand.java | 2 +- .../cli/tsql/commands/DescTableCommand.java | 4 +- .../tsql/commands/ExecExternalShellCommand.java | 3 +- .../tajo/cli/tsql/commands/ExitCommand.java | 4 +- .../tajo/cli/tsql/commands/HdfsCommand.java | 2 +- .../tajo/cli/tsql/commands/HelpCommand.java | 2 +- .../tajo/cli/tsql/commands/SetCommand.java | 2 +- .../cli/tsql/commands/TajoAdminCommand.java | 2 +- .../cli/tsql/commands/TajoGetConfCommand.java | 2 +- .../cli/tsql/commands/TajoHAAdminCommand.java | 2 +- .../cli/tsql/TestDefaultCliOutputFormatter.java | 2 +- .../org/apache/tajo/cli/tsql/TestTajoCli.java | 48 ++++++++++++++------ .../tajo/cli/tsql/TestTajoCliNegatives.java | 16 ++++--- .../commands/TestExecExternalShellCommand.java | 3 +- .../tajo/cli/tsql/commands/TestHdfsCommand.java | 7 +-- .../testAddPartitionNotimplementedException.err | 1 + ...stAddPartitionNotimplementedException.result | 3 +- .../testSelectResultWithNullTrueDeprecated.err | 1 + ...estSelectResultWithNullTrueDeprecated.result | 1 - .../results/TestTajoCli/testStopWhenError.err | 1 + .../TestTajoCli/testStopWhenError.result | 3 +- .../TestTajoCli/testStopWhenErrorDeprecated.err | 2 + .../testStopWhenErrorDeprecated.result | 4 +- 25 files changed, 93 insertions(+), 54 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 3ec86be..3c6bcaf 100644 --- a/CHANGES +++ b/CHANGES @@ -8,6 +8,9 @@ Release 0.12.0 - unreleased IMPROVEMENT + TAJO-2091: Error or progress update should use stderr instead of stdout. + (hyunsik) + TAJO-2064: Supporting auto-completion in Tsql. (Jongyoung Park via jaehwa) TAJO-2043: Implement new data type and schema. (hyunsik) http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java index 70defb1..489cd3d 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/TajoCli.java @@ -71,6 +71,7 @@ public class TajoCli implements Closeable { private final ConsoleReader reader; private final InputStream sin; private final PrintWriter sout; + private final PrintWriter serr; private TajoFileHistory history; private final boolean reconnect; // reconnect on invalid session @@ -143,6 +144,10 @@ public class TajoCli implements Closeable { return sout; } + public PrintWriter getError() { + return serr; + } + public TajoConf getConf() { return conf; } @@ -188,7 +193,7 @@ public class TajoCli implements Closeable { } } - public TajoCli(TajoConf c, String [] args, @Nullable Properties clientParams, InputStream in, OutputStream out) + public TajoCli(TajoConf c, String [] args, @Nullable Properties clientParams, InputStream in, OutputStream out, OutputStream err) throws Exception { CommandLineParser parser = new PosixParser(); @@ -205,6 +210,7 @@ public class TajoCli implements Closeable { this.reader.setExpandEvents(false); this.sout = new PrintWriter(reader.getOutput()); + this.serr = new PrintWriter(new OutputStreamWriter(err, "UTF-8")); initFormatter(); if (cmd.hasOption("help")) { @@ -278,6 +284,7 @@ public class TajoCli implements Closeable { displayFormatter.setScriptMode(); int exitCode = executeScript(cmd.getOptionValue("c")); sout.flush(); + serr.flush(); System.exit(exitCode); } if (cmd.hasOption("f")) { @@ -289,6 +296,7 @@ public class TajoCli implements Closeable { script = replaceParam(script, cmd.getOptionValues("param")); int exitCode = executeScript(script); sout.flush(); + serr.flush(); System.exit(exitCode); } else { System.err.println(ERROR_PREFIX + "No such a file \"" + cmd.getOptionValue("f") + "\""); @@ -549,6 +557,7 @@ public class TajoCli implements Closeable { onError(t); return -1; } finally { + context.getError().flush(); context.getOutput().flush(); } @@ -670,11 +679,11 @@ public class TajoCli implements Closeable { } if (TajoClientUtil.isQueryRunning(status.getState())) { - displayFormatter.printProgress(sout, status); + displayFormatter.printProgress(serr, status); } if (TajoClientUtil.isQueryComplete(status.getState()) && status.getState() != QueryState.QUERY_KILL_WAIT) { - displayFormatter.printProgress(sout, status); + displayFormatter.printProgress(serr, status); break; } else { Thread.sleep(Math.min(200 * progressRetries, 1000)); @@ -683,10 +692,10 @@ public class TajoCli implements Closeable { } if (status.getState() == QueryState.QUERY_ERROR || status.getState() == QueryState.QUERY_FAILED) { - displayFormatter.printErrorMessage(sout, status); + displayFormatter.printErrorMessage(serr, status); wasError = true; } else if (status.getState() == QueryState.QUERY_KILLED) { - displayFormatter.printKilledMessage(sout, queryId); + displayFormatter.printKilledMessage(serr, queryId); wasError = true; } else { if (status.getState() == QueryState.QUERY_SUCCEEDED) { @@ -727,18 +736,18 @@ public class TajoCli implements Closeable { private void printUsage() { HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp("tsql [options] [database]", options); + formatter.printUsage(this.serr, 80, "tsql [options] [database]", options); } private void printInvalidCommand(String command) { - sout.println("Invalid command " + command + ". Try \\? for help."); + serr.println("Invalid command " + command + ". Try \\? for help."); } private void onError(Throwable t) { Preconditions.checkNotNull(t); wasError = true; - displayFormatter.printErrorMessage(sout, t.getMessage()); + displayFormatter.printErrorMessage(serr, t.getMessage()); if (reconnect && (t instanceof InvalidClientSessionException)) { try { @@ -763,7 +772,7 @@ public class TajoCli implements Closeable { public static void main(String [] args) throws Exception { TajoConf conf = new TajoConf(); - TajoCli shell = new TajoCli(conf, args, new Properties(), System.in, System.out); + TajoCli shell = new TajoCli(conf, args, new Properties(), System.in, System.out, System.err); System.out.println(); System.exit(shell.runShell()); } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ConnectDatabaseCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ConnectDatabaseCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ConnectDatabaseCommand.java index 93cb62b..df548b3 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ConnectDatabaseCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ConnectDatabaseCommand.java @@ -68,7 +68,7 @@ public class ConnectDatabaseCommand extends TajoShellCommand { ); } catch (TajoException se) { - context.getOutput().write(String.format("ERROR: %s%n", se.getMessage())); + context.getError().write(String.format("ERROR: %s%n", se.getMessage())); } } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/DescTableCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/DescTableCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/DescTableCommand.java index 8760a37..6f01911 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/DescTableCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/DescTableCommand.java @@ -61,7 +61,7 @@ public class DescTableCommand extends TajoShellCommand { String tableName = tableNameMaker.toString().replace("\"", ""); TableDesc desc = client.getTableDesc(tableName); if (desc == null) { - context.getOutput().println("Did not find any relation named \"" + tableName + "\""); + context.getError().println("Did not find any relation named \"" + tableName + "\""); } else { context.getOutput().println(toFormattedString(desc)); // If there exists any indexes for the table, print index information @@ -84,7 +84,7 @@ public class DescTableCommand extends TajoShellCommand { } else if (cmd.length == 1) { List<String> tableList = client.getTableList(null); if (tableList.size() == 0) { - context.getOutput().println("No Relation Found"); + context.getError().println("No Relation Found"); } for (String table : tableList) { context.getOutput().println(table); http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExecExternalShellCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExecExternalShellCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExecExternalShellCommand.java index ac97959..90fad70 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExecExternalShellCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExecExternalShellCommand.java @@ -53,12 +53,13 @@ public class ExecExternalShellCommand extends TajoShellCommand { execCommand[2] = builtCommand; PrintWriter sout = context.getOutput(); + PrintWriter serr = context.getError(); CountDownLatch latch = new CountDownLatch(2); Process process = Runtime.getRuntime().exec(execCommand); try { InputStreamConsoleWriter inWriter = new InputStreamConsoleWriter(process.getInputStream(), sout, "", latch); - InputStreamConsoleWriter errWriter = new InputStreamConsoleWriter(process.getErrorStream(), sout, "ERROR: ", latch); + InputStreamConsoleWriter errWriter = new InputStreamConsoleWriter(process.getErrorStream(), serr, "ERROR: ", latch); inWriter.start(); errWriter.start(); http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExitCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExitCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExitCommand.java index a9f0846..15b664d 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExitCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/ExitCommand.java @@ -36,8 +36,8 @@ public class ExitCommand extends TajoShellCommand { @Override public void invoke(String[] cmd) throws Exception { - context.getOutput().println("bye!"); - context.getOutput().close(); + context.getError().println("bye!"); + context.getError().flush(); System.exit(0); } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HdfsCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HdfsCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HdfsCommand.java index 8f57b74..ad35398 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HdfsCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HdfsCommand.java @@ -42,7 +42,7 @@ public class HdfsCommand extends TajoShellCommand { fsShell.run(dfsCommands); } catch (Exception e) { - context.getOutput().println("ERROR: " + e.getMessage()); + context.getError().println("ERROR: " + e.getMessage()); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HelpCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HelpCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HelpCommand.java index e484d72..389375a 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HelpCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/HelpCommand.java @@ -102,7 +102,7 @@ public class HelpCommand extends TajoShellCommand { if (context.getCommands().containsKey(slashCommand)) { context.getCommands().get(slashCommand).printHelp(); } else { - context.getOutput().println("Command not found: " + cmd[1]); + context.getError().println("Command not found: " + cmd[1]); } } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/SetCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/SetCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/SetCommand.java index bd887d5..bd51458 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/SetCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/SetCommand.java @@ -74,7 +74,7 @@ public class SetCommand extends TajoShellCommand { } if (SessionVars.isDeprecated(key)) { - context.getOutput().println("Warning: deprecated to directly use config key in TajoConf.ConfVars. " + + context.getError().println("Warning: deprecated to directly use config key in TajoConf.ConfVars. " + "Please execute '\\help set'."); } } else { http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoAdminCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoAdminCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoAdminCommand.java index 53f66b0..9c31758 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoAdminCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoAdminCommand.java @@ -42,7 +42,7 @@ public class TajoAdminCommand extends TajoShellCommand { admin.runCommand(dfsCommands); } catch (Exception e) { - context.getOutput().println("ERROR: " + e.getMessage()); + context.getError().println("ERROR: " + e.getMessage()); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoGetConfCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoGetConfCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoGetConfCommand.java index a499766..8c8568f 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoGetConfCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoGetConfCommand.java @@ -49,7 +49,7 @@ public class TajoGetConfCommand extends TajoShellCommand { getconf.runCommand(getConfCommands); } catch (Exception e) { - context.getOutput().println("ERROR: " + e.getMessage()); + context.getError().println("ERROR: " + e.getMessage()); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoHAAdminCommand.java ---------------------------------------------------------------------- diff --git a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoHAAdminCommand.java b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoHAAdminCommand.java index 49dee28..2ea9b85 100644 --- a/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoHAAdminCommand.java +++ b/tajo-cli/src/main/java/org/apache/tajo/cli/tsql/commands/TajoHAAdminCommand.java @@ -42,7 +42,7 @@ public class TajoHAAdminCommand extends TajoShellCommand { haAdmin.runCommand(haAdminCommands); } catch (Exception e) { - context.getOutput().println("ERROR: " + e.getMessage()); + context.getError().println("ERROR: " + e.getMessage()); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestDefaultCliOutputFormatter.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestDefaultCliOutputFormatter.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestDefaultCliOutputFormatter.java index c497d74..fefdbb1 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestDefaultCliOutputFormatter.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestDefaultCliOutputFormatter.java @@ -66,7 +66,7 @@ public class TestDefaultCliOutputFormatter { public void setUp() throws Exception { conf = cluster.getConfiguration(); ByteArrayOutputStream out = new ByteArrayOutputStream(); - tajoCli = new TajoCli(conf, new String[]{}, null, System.in, out); + tajoCli = new TajoCli(conf, new String[]{}, null, System.in, out, out); cliContext = tajoCli.getContext(); } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java index 6bd694f..c210a24 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCli.java @@ -69,6 +69,7 @@ public class TestTajoCli { private TajoCli tajoCli; private Path currentResultPath; private ByteArrayOutputStream out; + private ByteArrayOutputStream err; @Rule public TestName name = new TestName(); @@ -81,14 +82,16 @@ public class TestTajoCli { @Before public void setUp() throws Exception { out = new ByteArrayOutputStream(); + err = new ByteArrayOutputStream(); Properties connParams = new Properties(); connParams.setProperty(RpcConstants.CLIENT_RETRY_NUM, "3"); - tajoCli = new TajoCli(cluster.getConfiguration(), new String[]{}, connParams, System.in, out); + tajoCli = new TajoCli(cluster.getConfiguration(), new String[]{}, connParams, System.in, out, err); } @After public void tearDown() throws IOException { out.close(); + err.close(); if (tajoCli != null) { tajoCli.close(); } @@ -106,17 +109,33 @@ public class TestTajoCli { assertOutputResult(name.getMethodName() + ".result", actual); } + private void assertErrorResult(String actual, boolean required) throws Exception { + String fileName = name.getMethodName() + ".err"; + if (required) { + assertOutputResult(fileName, actual); + } + } + private void assertOutputResult(String expectedResultFile, String actual) throws Exception { assertOutputResult(expectedResultFile, actual, null, null); } + private boolean existsFile(String fileName) throws IOException { + FileSystem fs = currentResultPath.getFileSystem(testBase.getTestingCluster().getConfiguration()); + Path filePath = StorageUtil.concatPath(currentResultPath, fileName); + return fs.exists(filePath); + } + + private Path getAbsolutePath(String fileName) { + return StorageUtil.concatPath(currentResultPath, fileName); + } + private void assertOutputResult(String expectedResultFile, String actual, String[] paramKeys, String[] paramValues) throws Exception { - FileSystem fs = currentResultPath.getFileSystem(testBase.getTestingCluster().getConfiguration()); - Path resultFile = StorageUtil.concatPath(currentResultPath, expectedResultFile); - assertTrue(resultFile.toString() + " existence check", fs.exists(resultFile)); + Path path = getAbsolutePath(expectedResultFile); + assertTrue(path.toString() + " existence check", existsFile(expectedResultFile)); - String expectedResult = FileUtil.readTextFile(new File(resultFile.toUri())); + String expectedResult = FileUtil.readTextFile(new File(path.toUri())); if (paramKeys != null) { for (int i = 0; i < paramKeys.length; i++) { @@ -164,7 +183,7 @@ public class TestTajoCli { assertEquals("tajo.executor.join.inner.in-memory-table-num=256", confValues[1]); TajoConf tajoConf = TpchTestBase.getInstance().getTestingCluster().getConfiguration(); - try (TajoCli testCli = new TajoCli(tajoConf, args, null, System.in, System.out)) { + try (TajoCli testCli = new TajoCli(tajoConf, args, null, System.in, System.out, err)) { assertEquals("false", testCli.getContext().get(SessionVars.CLI_PAGING_ENABLED)); assertEquals("256", testCli.getContext().getConf().get("tajo.executor.join.inner.in-memory-table-num")); } @@ -310,8 +329,10 @@ public class TestTajoCli { tajoCli.executeScript(sql); - String consoleResult = new String(out.toByteArray()); - assertOutputResult(consoleResult); + String stdoutResult = new String(out.toByteArray()); + assertOutputResult(stdoutResult); + String stdErrResult = new String(err.toByteArray()); + assertErrorResult(stdErrResult, false); } @Test @@ -345,7 +366,8 @@ public class TestTajoCli { setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); try (ByteArrayOutputStream out = new ByteArrayOutputStream(); - TajoCli tajoCli = new TajoCli(tajoConf, new String[]{}, null, System.in, out)) { + ByteArrayOutputStream err = new ByteArrayOutputStream(); + TajoCli tajoCli = new TajoCli(tajoConf, new String[]{}, null, System.in, out, err)) { tajoCli.executeMetaCommand("\\getconf tajo.rootdir"); String consoleResult = new String(out.toByteArray()); @@ -359,7 +381,7 @@ public class TestTajoCli { setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); ByteArrayOutputStream out = new ByteArrayOutputStream(); - TajoCli tajoCli = new TajoCli(tajoConf, new String[]{}, null, System.in, out); + TajoCli tajoCli = new TajoCli(tajoConf, new String[]{}, null, System.in, out, err); tajoCli.executeMetaCommand("\\admin -showmasters"); String consoleResult = new String(out.toByteArray()); @@ -395,7 +417,7 @@ public class TestTajoCli { setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); Properties connParams = new Properties(); connParams.setProperty(ClientParameters.RETRY, "3"); - TajoCli tc = new TajoCli(tajoConf, new String[]{}, connParams, is, out); + TajoCli tc = new TajoCli(tajoConf, new String[]{}, connParams, is, out, err); tc.executeMetaCommand("\\set ON_ERROR_STOP false"); assertSessionVar(tc, SessionVars.ON_ERROR_STOP.keyname(), "false"); @@ -489,7 +511,7 @@ public class TestTajoCli { assertEquals(0L, tableDesc.getStats().getNumRows().longValue()); try (InputStream testInput = new ByteArrayInputStream(new byte[]{(byte) DefaultTajoCliOutputFormatter.QUIT_COMMAND}); - TajoCli cli = new TajoCli(cluster.getConfiguration(), new String[]{}, null, testInput, out)) { + TajoCli cli = new TajoCli(cluster.getConfiguration(), new String[]{}, null, testInput, out, err)) { setVar(cli, SessionVars.CLI_PAGE_ROWS, "2"); setVar(cli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); @@ -504,7 +526,7 @@ public class TestTajoCli { @Test public void testResultRowNumWhenSelectingOnPartitionedTable() throws Exception { try (TajoCli cli2 = new TajoCli(cluster.getConfiguration(), new String[]{}, null, System.in, - new NullOutputStream())) { + new NullOutputStream(), new NullOutputStream())) { cli2.executeScript("create table region_part (r_regionkey int8, r_name text) " + "partition by column (r_comment text) as select * from region"); http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java index fcf4546..aea82ab 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java @@ -36,16 +36,19 @@ import static org.junit.Assert.assertEquals; public class TestTajoCliNegatives extends QueryTestCaseBase { private static TajoCli tajoCli; private static ByteArrayOutputStream out; + private static ByteArrayOutputStream err; @BeforeClass public static void setUp() throws Exception { out = new ByteArrayOutputStream(); - tajoCli = new TajoCli(testingCluster.getConfiguration(), new String[]{}, null, System.in, out); + err = new ByteArrayOutputStream(); + tajoCli = new TajoCli(testingCluster.getConfiguration(), new String[]{}, null, System.in, out, err); } @AfterClass public static void tearDown() throws IOException { out.close(); + err.close(); if (tajoCli != null) { tajoCli.close(); } @@ -54,11 +57,12 @@ public class TestTajoCliNegatives extends QueryTestCaseBase { @Before public void resetConsole() throws IOException { out.reset(); + err.reset(); } public void assertMetaCommandFailure(String cmd, String expectedMsg) throws Exception { tajoCli.executeMetaCommand(cmd); - String consoleResult = new String(out.toByteArray()); + String consoleResult = new String(err.toByteArray()); assertEquals(expectedMsg, consoleResult); } @@ -67,13 +71,13 @@ public class TestTajoCliNegatives extends QueryTestCaseBase { String expected = FileUtil.readTextFile(new File(resultFile.toUri())); tajoCli.executeScript(cmd); - String consoleResult = new String(out.toByteArray()); + String consoleResult = new String(err.toByteArray()); assertEquals(expected, consoleResult); } public void assertScriptFailure(String cmd, String expectedMsg) throws Exception { tajoCli.executeScript(cmd); - String consoleResult = new String(out.toByteArray()); + String consoleResult = new String(err.toByteArray()); assertEquals(expectedMsg, consoleResult); } @@ -132,9 +136,7 @@ public class TestTajoCliNegatives extends QueryTestCaseBase { public void testQueryFailureOfSimpleQuery() throws Exception { setVar(tajoCli, SessionVars.CLI_FORMATTER_CLASS, TajoCliOutputTestFormatter.class.getName()); assertScriptFailure("select fail(3, l_orderkey, 'testQueryFailureOfSimpleQuery') from default.lineitem" , - "?fail\n" + - "-------------------------------\n" + - "ERROR: internal error: internal error: internal error: testQueryFailureOfSimpleQuery\n"); + "ERROR: internal error: internal error: internal error: testQueryFailureOfSimpleQuery\n"); } @Test http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestExecExternalShellCommand.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestExecExternalShellCommand.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestExecExternalShellCommand.java index 95c3a8b..cd2d1b7 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestExecExternalShellCommand.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestExecExternalShellCommand.java @@ -33,8 +33,9 @@ public class TestExecExternalShellCommand { TajoConf tajoConf = TpchTestBase.getInstance().getTestingCluster().getConfiguration(); ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream err = new ByteArrayOutputStream(); - TajoCli cli = new TajoCli(tajoConf, new String[]{}, null, null, out); + TajoCli cli = new TajoCli(tajoConf, new String[]{}, null, null, out, err); cli.executeMetaCommand("\\! echo \"this is test\""); String consoleResult = new String(out.toByteArray()); http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestHdfsCommand.java ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestHdfsCommand.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestHdfsCommand.java index d239c0a..c4c76cd 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestHdfsCommand.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/commands/TestHdfsCommand.java @@ -34,13 +34,14 @@ public class TestHdfsCommand { TajoConf tajoConf = TpchTestBase.getInstance().getTestingCluster().getConfiguration(); ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream err = new ByteArrayOutputStream(); System.setOut(new PrintStream(out)); - System.setErr(new PrintStream(out)); - TajoCli cli = new TajoCli(tajoConf, new String[]{}, null, null, out); + System.setErr(new PrintStream(err)); + TajoCli cli = new TajoCli(tajoConf, new String[]{}, null, null, out, err); cli.executeMetaCommand("\\dfs -test"); - String consoleResult = new String(out.toByteArray()); + String consoleResult = new String(err.toByteArray()); assertEquals("-test: Not enough arguments: expected 1 but got 0\n" + "Usage: hadoop fs [generic options] -test -[defsz] <path>\n", consoleResult); } http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.err ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.err b/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.err new file mode 100644 index 0000000..0f93146 --- /dev/null +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.err @@ -0,0 +1 @@ +ERROR: not implemented feature: ADD PARTITION \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.result ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.result index 4aab8c8..a0aba93 100644 --- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.result +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testAddPartitionNotimplementedException.result @@ -1,2 +1 @@ -OK -ERROR: not implemented feature: ADD PARTITION \ No newline at end of file +OK \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.err ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.err b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.err new file mode 100644 index 0000000..634795a --- /dev/null +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.err @@ -0,0 +1 @@ +Warning: deprecated to directly use config key in TajoConf.ConfVars. Please execute '\help set'. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result index 1212ade..302d80c 100644 --- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testSelectResultWithNullTrueDeprecated.result @@ -1,4 +1,3 @@ -Warning: deprecated to directly use config key in TajoConf.ConfVars. Please execute '\help set'. c_custkey, o_orderkey, o_orderstatus ------------------------------- 1, 1, O http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.err ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.err b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.err new file mode 100644 index 0000000..bff3cfe --- /dev/null +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.err @@ -0,0 +1 @@ +ERROR: relation 'default.lineitem2' does not exist \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result index a0044c2..d480b2b 100644 --- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenError.result @@ -1,5 +1,4 @@ ?count ------------------------------- 5 -(1 rows, , 16 B selected) -ERROR: relation 'default.lineitem2' does not exist \ No newline at end of file +(1 rows, , 16 B selected) \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.err ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.err b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.err new file mode 100644 index 0000000..6affb7f --- /dev/null +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.err @@ -0,0 +1,2 @@ +Warning: deprecated to directly use config key in TajoConf.ConfVars. Please execute '\help set'. +ERROR: relation 'default.lineitem2' does not exist \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tajo/blob/9fcc9fd3/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result ---------------------------------------------------------------------- diff --git a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result index e3f1e6b..d480b2b 100644 --- a/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result +++ b/tajo-core-tests/src/test/resources/results/TestTajoCli/testStopWhenErrorDeprecated.result @@ -1,6 +1,4 @@ -Warning: deprecated to directly use config key in TajoConf.ConfVars. Please execute '\help set'. ?count ------------------------------- 5 -(1 rows, , 16 B selected) -ERROR: relation 'default.lineitem2' does not exist \ No newline at end of file +(1 rows, , 16 B selected) \ No newline at end of file
