SLIDER-520 add funtests for diagnostics
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/c6c5955b Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/c6c5955b Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/c6c5955b Branch: refs/heads/develop Commit: c6c5955b252fe640f20c70a60fbe201d939fba68 Parents: 99fd391 Author: Steve Loughran <ste...@apache.org> Authored: Tue Oct 14 17:36:49 2014 -0700 Committer: Steve Loughran <ste...@apache.org> Committed: Tue Oct 14 17:36:49 2014 -0700 ---------------------------------------------------------------------- slider-assembly/src/conf/log4j.properties | 2 + .../org/apache/slider/client/SliderClient.java | 103 ++++++++++++------- .../apache/slider/common/params/ClientArgs.java | 2 +- .../server/appmaster/SliderAppMaster.java | 6 +- .../funtest/framework/CommandTestBase.groovy | 15 +++ .../slider/funtest/framework/SliderShell.groovy | 23 ++++- .../commands/DiagnosticsCommandIT.groovy | 6 +- 7 files changed, 107 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-assembly/src/conf/log4j.properties ---------------------------------------------------------------------- diff --git a/slider-assembly/src/conf/log4j.properties b/slider-assembly/src/conf/log4j.properties index 3c0d08c..b4a9aa4 100644 --- a/slider-assembly/src/conf/log4j.properties +++ b/slider-assembly/src/conf/log4j.properties @@ -56,3 +56,5 @@ log4j.logger.org.apache.hadoop.hdfs=WARN log4j.logger.org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor=WARN log4j.logger.org.apache.hadoop.yarn.server.nodemanager.NodeStatusUpdaterImpl=WARN log4j.logger.org.apache.zookeeper=WARN +log4j.logger.org.apache.curator.framework.state=ERROR +log4j.logger.org.apache.curator.framework.imps=WARN http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java index d5725e0..50a7097 100644 --- a/slider-core/src/main/java/org/apache/slider/client/SliderClient.java +++ b/slider-core/src/main/java/org/apache/slider/client/SliderClient.java @@ -2585,46 +2585,60 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe } } - private void actionDiagnosticClient(ActionDiagnosticArgs diagnosticArgs) + private void actionDiagnosticClient(ActionDiagnosticArgs diagnosticArgs) throws SliderException, IOException { - String currentCommandPath = SliderUtils.getCurrentCommandPath(); - SliderVersionInfo.loadAndPrintVersionInfo(log); - String clientConfigPath = SliderUtils.getClientConfigPath(); - String jdkInfo = SliderUtils.getJDKInfo(); - println("The slider command path: " + currentCommandPath); - println("The slider-client.xml used by current running command path: " - + clientConfigPath); - println(jdkInfo); - - // verbose? - if (diagnosticArgs.verbose) { - // do the environment - Map<String, String> env = System.getenv(); - Set<String> envList = ConfigHelper.sortedConfigKeys(env.entrySet()); - StringBuilder builder = new StringBuilder("Environment variables:\n"); - for (String key : envList) { - builder.append(key) - .append("=") - .append(env.get(key)) - .append("\n"); + try { + String currentCommandPath = SliderUtils.getCurrentCommandPath(); + SliderVersionInfo.loadAndPrintVersionInfo(log); + String clientConfigPath = SliderUtils.getClientConfigPath(); + String jdkInfo = SliderUtils.getJDKInfo(); + println("The slider command path: %s", currentCommandPath); + println("The slider-client.xml used by current running command path: %s", + clientConfigPath); + println(jdkInfo); + + // security info + Configuration config = getConfig(); + if (SliderUtils.isHadoopClusterSecure(config)) { + println("Hadoop Cluster is secure"); + println("Login user is %s", UserGroupInformation.getLoginUser()); + println("Current user is %s", UserGroupInformation.getCurrentUser()); + + + } else { + println("Hadoop Cluster is insecure"); } - println(builder.toString()); - - // then the config - println("Slider client configuration:\n" + - ConfigHelper.dumpConfigToString(getConfig())); + + + // verbose? + if (diagnosticArgs.verbose) { + // do the environment + Map<String, String> env = System.getenv(); + Set<String> envList = ConfigHelper.sortedConfigKeys(env.entrySet()); + StringBuilder builder = new StringBuilder("Environment variables:\n"); + for (String key : envList) { + builder.append(key) + .append("=") + .append(env.get(key)) + .append("\n"); + } + println(builder.toString()); + + // then the config + println("Slider client configuration:\n" + + ConfigHelper.dumpConfigToString(config)); + } + + + SliderUtils.validateSliderClientEnvironment(log); + } catch (SliderException e) { + log.error(e.toString()); + throw e; + } catch (IOException e) { + log.error(e.toString()); + throw e; } - try { - SliderUtils.validateSliderClientEnvironment(log); - } catch (SliderException e) { - log.error(e.toString()); - throw e; - } catch (IOException e) { - log.error(e.toString()); - throw e; - } - } @@ -2878,13 +2892,22 @@ public class SliderClient extends AbstractSliderLaunchedService implements RunSe /** * Output to standard out/stderr with a newline after - * @param src source + * @param message message */ - private static void println(CharSequence src) { - print(src); + private static void println(String message) { + print(message); print("\n"); } - + /** + * Output to standard out/stderr with a newline after, formatted + * @param message message + * @param args arguments for string formatting + */ + private static void println(String message, Object ... args) { + print(String.format(message, args)); + print("\n"); + } + } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java b/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java index a4265aa..6e03d4b 100644 --- a/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java +++ b/slider-core/src/main/java/org/apache/slider/common/params/ClientArgs.java @@ -238,7 +238,7 @@ public class ClientArgs extends CommonArgs { bindCoreAction(actionRegistryArgs); } else if (SliderActions.ACTION_RESOLVE.equals(action)) { - bindCoreAction(actionRegistryArgs); + bindCoreAction(actionResolveArgs); } else if (SliderActions.ACTION_STATUS.equals(action)) { bindCoreAction(actionStatusArgs); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java index d2a8936..ef4d69c 100644 --- a/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java +++ b/slider-core/src/main/java/org/apache/slider/server/appmaster/SliderAppMaster.java @@ -412,10 +412,8 @@ public class SliderAppMaster extends AbstractSliderLaunchedService log.debug("Authenticating as {}", ugi); SliderUtils.verifyPrincipalSet(conf, DFSConfigKeys.DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY); - // always enforce protocol to be token-based. - conf.set( - CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, - SaslRpcServer.AuthMethod.TOKEN.toString()); + } else { + log.info("Cluster is insecure"); } log.info("Login user is {}", UserGroupInformation.getLoginUser()); http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy index cfe3006..33e109a 100644 --- a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy +++ b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/CommandTestBase.groovy @@ -167,6 +167,21 @@ abstract class CommandTestBase extends SliderTestUtils { } /** + * Print to system out + * @param string + */ + static void println(String s) { + System.out.println(s) + } + /** + * Print to system out + * @param string + */ + static void println() { + System.out.println() + } + + /** * Exec any slider command * @param conf * @param commands http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/SliderShell.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/SliderShell.groovy b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/SliderShell.groovy index 6effb46..a7fd58c 100644 --- a/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/SliderShell.groovy +++ b/slider-funtest/src/main/groovy/org/apache/slider/funtest/framework/SliderShell.groovy @@ -144,13 +144,29 @@ class SliderShell extends Shell { log.error(toString()) log.error("return code = ${signCorrectReturnCode()}") if (out.size() != 0) { - log.info("\n<stdout>\n${out.join('\n')}\n</stdout>"); + log.info("\n<stdout>\n${stdoutHistory}\n</stdout>"); } if (err.size() != 0) { - log.error("\n<stderr>\n${err.join('\n')}\n</stderr>"); + log.error("\n<stderr>\n${stdErrHistory}\n</stderr>"); } } - + + /** + * Get the stderr history + * @return the history + */ + public String getStdErrHistory() { + return err.join('\n') + } + + /** + * Get the stdout history + * @return the history + */ + public String getStdoutHistory() { + return out.join('\n') + } + /** * Assert the shell exited with a given error code * if not the output is printed and an assertion is raised @@ -161,7 +177,6 @@ class SliderShell extends Shell { dumpOutput() throw new SliderException(ret, "Expected exit code of command ${command} : ${errorCode} - actual=${ret}") - } } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/c6c5955b/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/DiagnosticsCommandIT.groovy ---------------------------------------------------------------------- diff --git a/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/DiagnosticsCommandIT.groovy b/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/DiagnosticsCommandIT.groovy index 430a75f..1a4ae7a 100644 --- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/DiagnosticsCommandIT.groovy +++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/commands/DiagnosticsCommandIT.groovy @@ -31,13 +31,17 @@ public class DiagnosticsCommandIT extends CommandTestBase { @Test public void testClientDiagnostics() throws Throwable { - slider(0, + def shell = slider(0, [ SliderActions.ACTION_DIAGNOSTIC, Arguments.ARG_CLIENT, Arguments.ARG_VERBOSE ] ) + println(shell.stdoutHistory) + println() + println(shell.stdErrHistory) + } }